Avatar billede funkoo Nybegynder
01. oktober 2001 - 13:32 Der er 42 kommentarer og
1 løsning

parameter-overførelse

Jeg har på en jsp-side har hentet noget fra databasen og resultatet skal jeg bruge til at lave en ny forespørgelse.
Det jeg har lavet indtil videre ser sådan her ud:
<%
    String projektNavn =  request.getParameter(\"projektnavn\");//noget man har indtastet i forige side
    deltager.connect(); // connect til databasen hvor funktionen wievProjekt ligger.
    ResultSet result = deltager.viewProjekt(projektNavn);//jeg får projektid tilbage ved at skrive <%= rs.getString(\"PROJEKTID\") %>

%>

Jeg vil hente projektid fra tabellen projekt(med projektnavn som jeg har fået oplyst), og det vil bruge til at indsætte nogle parameter ind i  deltagertabellen. Deltagertabellen har projektnr som fremmed nøgle til projektid(projekttabellen).
Jeg havde forestillet mig at man kunne skrive:
<%
    String projektNavn =  request.getParameter(\"projektnavn\");
    deltager.connect();
    String projektnr = deltager.viewProjekt(projektNavn);
    deltager.disconnect();
    %>

    <%
      String dstart =  request.getParameter(\"deltagerstart\");
      String dslut = request.getParameter(\"deltagerslut\");
     
     

      deltager.connect();
      deltager.addDeltager(projektnr,dstart,dslut);
      deltager.disconnect();
    %>
Avatar billede disky Nybegynder
01. oktober 2001 - 13:35 #1
Ser umiddelbart korrekt ud.

Men når du bruger getParameter kan det være en god ide at checke for om værdien er null.

Bortset fra det ser tingene fint ud.

Men hvorfor lader du ikke din deltager.viewProjekt og deltager.addDeltager metode ikke selv åbne og lukke database forbindelse
Avatar billede funkoo Nybegynder
01. oktober 2001 - 13:54 #2
Nå ja det kan jeg osse godt.
Fejlmeddelsen er:
com.caucho.jsp.JspParseException: /ericsson/projekt/tilfoejdeltager/adddeltager.jsp:20: Incompatible type for declaration. Can\'t convert java.sql.ResultSet to java.lang.String. String projektnr = deltager.viewProjekt(projektNavn); ^ /ericsson/projekt/tilfoejdeltager/adddeltager.jsp:29: Incompatible type for declaration. Can\'t convert java.lang.String[] to java.lang.String. String kys = request.getParameterValues(\"pkey\"); ^ /ericsson/projekt/tilfoejdeltager/adddeltager.jsp:37: Incompatible type for method. Can\'t convert java.lang.String to int. deltager.addDeltager(projektnr,kys,dstart,dslut); ^ 3 errors

Jeg har i min .java viewProjekt skrevet:
public ResultSet viewProjekt(String projektNavn) ResultSet projektnr = null;
    String queryString = (\"SELECT projektid FROM projekt where PROJEKTNAVN =\'\" + projektNavn + \"\'\");       

      Statement stmt = con.createStatement();
      projektnr = stmt.executeQuery(queryString);

    return projektnr;

og Adddeltager:

public void addDeltager(int projektnr,String kys, String dstart, String dslut)
   
        PreparedStatement updateDeltager;
        updateDeltager = con.prepareStatement(
                      \"insert into projektdeltager values(?, ?, ?, ?);\");
        updateDeltager.setInt(1, projektnr);
        updateDeltager.setString(2, kys);
        updateDeltager.setString(3, dstart);
        updateDeltager.setString(4, dslut);
        updateDeltager.execute();
   
  }
Jeg skal lige tilføje at \"kys\" er brugerid for en person. Det har jeg glemt at skrive med i mit spørgsmål.
Avatar billede disky Nybegynder
01. oktober 2001 - 13:56 #3
okay

når du har et resultset, og i database har en kolonne der hedder Navn som er af typen text

skal du skrive

rset.getString(\"Navn\"); den returnerer så en String


GetParameter returnerer altid en String, hvis du er 100% sikker på den altid er et tal, kan du bruge Integer.parseInt(dinStringMedTalI);
Avatar billede funkoo Nybegynder
01. oktober 2001 - 13:57 #4
Jeg ved at jeg i .jsp skulle have kaldt :
<%
    String projektNavn =  request.getParameter(\"projektnavn\");
    deltager.connect();
  -->  String projektnr = deltager.viewProjekt(projektNavn);
    deltager.disconnect();
    %>
for ResultSet rs= deltager.viewProjekt(projektNavn);.
Men så ved jeg ikke hvordan jeg skal komme videre.
Avatar billede disky Nybegynder
01. oktober 2001 - 14:02 #5
<%
    String projektNavn =  request.getParameter(\"projektnavn\");
    deltager.connect();
    ResultSet rs= deltager.viewProjekt(projektNavn);
    deltager.disconnect();

String projektnr=rs.getString(\"XXXXXXXXXX\");

    %>


XXXXXXXX skal byttet ud med navnet på den kolonne i din database tabel som indeholder projektnr
Avatar billede funkoo Nybegynder
01. oktober 2001 - 14:09 #6
Øjeblik jeg prøver lige engang. Forresten Jeg spurgte dig sidst om resin understøtter EJB. Og der svarede du rigtigt. Spørgsmålet idag lyder: Den Recin-CMP fil man skal download. Skal den pakkes ud oven på den nuværende resinserver?
Avatar billede disky Nybegynder
01. oktober 2001 - 14:10 #7
funkoo: det kan jeg desværre ikke svare på, men jeg går ud fra det er beskrevet i en eller andet text fil,
Avatar billede funkoo Nybegynder
01. oktober 2001 - 14:20 #8
Nå men det er da første gang du ikke kan det!*S* Jeg afprøver lige. Der er nogle småfejl, jeg skal have rettet.
Avatar billede disky Nybegynder
01. oktober 2001 - 14:22 #9
nu kan jeg.

Så vidt jeg kan se indeholder Resin-CMP, resin 2.0 + det extra du skal bruge, altså smed den oven i den gamle installation, men red lige config filerne først
Avatar billede funkoo Nybegynder
01. oktober 2001 - 14:33 #10
Kanon, Disky.
Har du nogle forslag til hvordan jeg skal hente forskellige parameter fra forskellige sider. Kunne jeg bruge sessions?
Det er fordi jeg har en side hvor man kan oprette et projekt. Der skriver man oplysninger om det projekt der skal oprettes. Man kan i opretProjekt også tilknytte projektdeltager til.
Vil man gøre det skal man jo søge efter dem. Man udfylder nogle søgekriterier og får et resultat tilbage. Dette resultat det man ønskede kan personen blive tilknyttet projektet. For at gøre det skal man have deltagerens ID samt den oprettede projekts ID.

Det er klart at hvis du ønsker flere points skal du have det!!

Det jeg tænkte med sessions var, at man kunne bruge de parameter, man fik fra databasen, sammen med dem man har indtast til at indsætte deltagerne i projektdeltagertabellen.
Hvad synes du?
Avatar billede disky Nybegynder
01. oktober 2001 - 14:38 #11
når du bruger \'usebean\' sæt scope=\'session\' så eksistere objektet så længe brugerens session er valid.

Så kan du hente og gemme data i objektet på alle dine websider der \'user\' denne bean
Avatar billede funkoo Nybegynder
01. oktober 2001 - 14:49 #12
dvs:
<jsp:useBean id=\"deltager\" scope=\'projektsession\' class=\"com.projekt.tilfoejdeltager.Deltager\"/>
?
Jeg bliver ved med spørge dig lidt endnu, okay! Du siger bare til, når du har fået nok, okay(Lov mig det!)

Efter at have lavet søgningen på bruger får jeg et resultat tilbage:
<td>
          <input type=\"checkbox\" name=\"pkey\" value=\"<%= rs.getString(\"LOENID\") %>\" />
          </td>
          <td><%= rs.getString(\"FORNAVN\") %></td>
          <td><%= rs.getString(\"EFTERNAVN\") %></td>
          <td><%= rs.getString(\"INITIALER\") %></td>
          <td><input type=\"text\" name=\"deltagerstart\" maxlength=\"10\" size=\"8\"> åååå-mm-dd</td>
          <td><input type=\"text\" name=\"deltagerslut\" maxlength=\"10\" size=\"8\"> åååå-mm-dd</td>
        <% } %>

      </table><br />

      <input type=\"submit\" value=\"Tilføj til projektet\">

Det jeg vil er at man skal klikke på checkboxen for at tilføje brugeren som deltager i projektet. Så er det sådan at jeg skal bruge \"LOENID\", på den næste side til at indsætte brugeren i projektdeltagertabellen! Så den næste side (som osse er den du har hjulpet mig med) skriver jeg således:
<%
    String projektNavn =  request.getParameter(\"projektnavn\");
    deltager.connect();
    ResultSet rs= deltager.viewProjekt(projektNavn);

    %>

    <%
      String dstart =  request.getParameter(\"deltagerstart\");
      String dslut = request.getParameter(\"deltagerslut\");
      String kys = Integer.parseInt(request.getParameterValues(\"pkey\"));
      String projektnr=rs.getString(\"PROJEKTID\");

      deltager.addDeltager(projektnr,kys,dstart,dslut);
      deltager.disconnect();
    %>
Der brokker serveren sig ved \"String kys = Integer.parseInt(request.getParameterValues(\"pkey\"));\"
Fejlmeddelsen:
com.caucho.jsp.JspParseException: /ericsson/projekt/tilfoejdeltager/adddeltager.jsp:27: Incompatible type for method. Can\'t convert java.lang.String[] to java.lang.String. String kys = Integer.parseInt(request.getParameterValues(\"pkey\")); ^ 1 error
Avatar billede disky Nybegynder
01. oktober 2001 - 14:50 #13
nej skriv:
<jsp:useBean id=\"deltager\" scope=\"session\" class=\"com.projekt.tilfoejdeltager.Deltager\"/>
Avatar billede disky Nybegynder
01. oktober 2001 - 14:53 #14
getParameterValues returnerer et array af Strings, ikke kun en String.

Nøjes med at bruge
String kys = Integer.parseInt(request.getParameter(\"pkey\"));

Jeg mener den virker på dropdown boxe.

p.s. du spørger bare løs :) Og point er som altid op til dig selv
     
Avatar billede funkoo Nybegynder
01. oktober 2001 - 14:58 #15
okay,
Kan man så skrive noget i retningen af
session.setAttribute( <%= rs.getString(\"PROJEKTID\") %>\", pid );
Eller er det kun ved
String projektNavn = request.getParameter( \"projektnavn\" );
session.setAttribute( \"projektNavn\", Projektnavn );

Avatar billede disky Nybegynder
01. oktober 2001 - 15:00 #16
hvis du har en variable der hedder \'pid\'

skal du skrive:
session.setAttribute( rs.getString(\"PROJEKTID\") , pid );

Den anden er fin nok
Avatar billede funkoo Nybegynder
01. oktober 2001 - 15:18 #17
Jeg fortsætter lidt endnu uden brug at sessions.
Der kommer en fejlmeddelse frem som siger:
java.sql.SQLException: Before start of result set

Det må være \"<%
    String projektNavn =  request.getParameter(\"projektnavn\");
--> deltager.connect();
    ResultSet rs= deltager.viewProjekt(projektNavn);
    String projektnr=rs.getString(\"PROJEKTID\");

    %>\"
den brokker sig?
Avatar billede funkoo Nybegynder
01. oktober 2001 - 15:19 #18
Det kan jeg ikke forstå!
Avatar billede disky Nybegynder
01. oktober 2001 - 15:20 #19
Skriv

\"<%
    String projektNavn =  request.getParameter(\"projektnavn\");
--> deltager.connect();
    ResultSet rs= deltager.viewProjekt(projektNavn);
    if(rs.next())
    {
      String projektnr=rs.getString(\"PROJEKTID\");
    }

Avatar billede funkoo Nybegynder
01. oktober 2001 - 15:29 #20
Så kommer der et nyt fejl frem:
com.caucho.jsp.JspParseException: /ericsson/projekt/tilfoejdeltager/adddeltager.jsp:42: Undefined variable: projektnr deltager.addDeltager(projektnr,kys,dstart,dslut); ^ 1 error
Avatar billede disky Nybegynder
01. oktober 2001 - 18:38 #21
det metode med de parametere findes åbenbart ikke i din klasse
Avatar billede funkoo Nybegynder
01. oktober 2001 - 20:03 #22
Jeg troede at du ikke vil snakke med mig mere!!

Jeg har fundet ud af at den brokker sig i:

String projektnr=rs.getString(\"PROJEKTID\");

Hvis jeg fjerner sætningen brokkker den ikke mere!! Men så kan jeg ikke bruge det! Hvordan skal jeg få parameterne overført?
Avatar billede disky Nybegynder
02. oktober 2001 - 08:23 #23
jo jeg vil gerne hjælpe, jeg skulle bare ud og dykke :)

Hvis den linie er der hvilken fejl kommer den med ?
Avatar billede funkoo Nybegynder
03. oktober 2001 - 11:28 #24
Jeg har fundet ud at det!
Det er mærkelligt men det virker, nu skal du se:
ResultSet rs= deltager.viewProjekt(projektNavn);
  if (rs.next()) {
  %>
  <% } deltager.disconnect(); %>
  <%
    String projektnr= rs.getString(\"PROJEKTID\");
Af en mærkelig årsag kunne det forrige kode:
ResultSet rs= deltager.viewProjekt(projektNavn);
    if(rs.next())
    {
      String projektnr=rs.getString(\"PROJEKTID\");
    }

ikke virke, da den springer if-sætningen over og dermed ikke kender \"projektnr\". Men det andet virker(af en mærkelig årsag!!Men heldigvis).
Ved du om man kan dele en side horisontalt? Man kan jo lave <%@include file=\"XXX.jsp\"%>. Men den bilver delt vertikalt!
Avatar billede disky Nybegynder
03. oktober 2001 - 11:29 #25
det kan du godt hvis du laver en tabel med 2 kolonner, og indholdet i dem bliver includet.


Avatar billede funkoo Nybegynder
03. oktober 2001 - 15:41 #26
tænkte det nok!!
Avatar billede funkoo Nybegynder
03. oktober 2001 - 16:43 #27
Disky!
Jeg har en sessions som er en int.
når jeg konventere den til en string, er det ikke sådan her:
String ettal= Integer.parseInt(session.getAttribute(\"tal\"));
Eller :
String ettal = session.getAttribute(\"tal\").toString();

Avatar billede funkoo Nybegynder
03. oktober 2001 - 16:51 #28
Hvis jeg ikke svarer dig med det samme, er det fordi jeg er på vej hjem. På forhånd tak.
Avatar billede disky Nybegynder
04. oktober 2001 - 08:38 #29
Ja og jeg var taget hjem :)

Dit eksempel 2 konvertere en string til en string :)

Metode 1 er den næsten korrekte måde at gøre det på.

MEN hvis der ikke er en attribute med navnet \'tal\' for du en \'null pointer exception\'

Derfor er følgende bedre:

int tal;

String temp=session.getAttribute(\"tal);
if(temp!=null)
{
  tal=Integer.parseInt(temp)
}


String ettal= Integer.parseInt(session.getAttribute(\"tal\"));
Avatar billede funkoo Nybegynder
04. oktober 2001 - 21:39 #30
Tak, det virker!;) Ikke noget nyt i det*S*
Jeg har været begravet med andre ting idag, så jeg har ikke haft tid!!
Med den metode du ligge har vist, kan det ikke bruges til at sætte to session.getAttribute sammen?
Jeg har to sider som bruger session.setAttribut(som er det samme) og den tredje side skal gøre brug af sessionen. men de to sessioner har forskellige navne fordi de køre uafhængig af hinanden, hvad gør jeg så? Forstod du spørgsmålet? Altså i mit program kan man både oprette projekter og rediger projekter. Jeg har lavet det sådan at man kan se hvem der er tilknyttet projekterne efter man har oprettet dem. Derfor har jeg brugt en session til at huske projektID og den vil blive kaldt når jeg skal hente info. om projektet.
Desuden kan man når man vil rediger projektet ændre projektets informationer, her har jeg også brugt sessions til at huske projektid. Problemet opstår når jeg vil lave en søgning så man kan tilføje ny personer til projektet. Her skal jeg hente projektid med session. Som er problemet.
Avatar billede disky Nybegynder
05. oktober 2001 - 08:53 #31
hvis det er samme bruger der arbejder på dine sider, er hans/hendes session den samme.
Avatar billede funkoo Nybegynder
05. oktober 2001 - 10:22 #32
Jo men problemet er at personen kan komme forskellige steder fra og hvis de skal gøre brug af funktionen skal sessionen hentes!!
Jeg tror at jeg har fundet ud af det.
Som du sagde kan man vel lave en session.setAttribute med samme værdier på begge sider! Og derefter kalde session på den tredje side. For man kommer kommer ikke ind i de to side. Altså enten side 1+3 eller side 2+3.!!
Avatar billede funkoo Nybegynder
05. oktober 2001 - 13:22 #33
Disky!
Jeg har nogle \"<%@ include file=%>\" på nogle sider. Jeg vil have at den skal vise side1.jsp hvis den kommer fra en vej, og vise side2.jsp den anden vej.
Kan jeg lave en if-else sætning? Hvordan skal jeg sætte sessions på side1 og side2? Jeg havde tænkt mig at man kunne sige:
if (session.getAttribute(\"tal\")=1)
    <%@ include file=side1.jsp%>
else
  <%@ include file=side2.jsp%>
Avatar billede disky Nybegynder
05. oktober 2001 - 13:24 #34
nu kan jeg selvfølgelig ikke lige huske hvad den hedder.

Men der er en måde du kan bruge til at se hvilken side du kommer fra.

Men din måde at gøre det på virker også.
Avatar billede funkoo Nybegynder
05. oktober 2001 - 14:00 #35
Det kan godt lave sig gøre at lave en:
session.setAttribute(\"tal\",1);  ?
Avatar billede funkoo Nybegynder
05. oktober 2001 - 14:06 #36
Det kunne jeg ikke! Den siger at man ikke kan konventer en int til et objekt!
Avatar billede disky Nybegynder
05. oktober 2001 - 14:14 #37
Det kan man heller ikke ved hjælp af cast

men du kan

session.setAttribute(\"tal\",new Integer(1)); 
Avatar billede funkoo Nybegynder
05. oktober 2001 - 14:38 #38
Jeg har fundet ud ad det!!
Det du henviste til men ikke kunne huske hed noget med \"historie\", men det kunne jeg ikke bruge!
Så jeg valgte session, Er der noget kan gøre for dig? Siden du har hjulpet mig så meget!!! Er din hotmailadresse rigtig? Så kunne jeg sende dig en filmliste over de divX film jeg har!!
Avatar billede funkoo Nybegynder
05. oktober 2001 - 15:00 #39
Hvordan skal jeg skrive if sætningen?
<%
if (Integer.parseInt(session.getAttribute(\"tal\")=1)
{%>
<%@ include file=\"soegdeltager.jsp\"%>
<%}%>
Der kommer en fejlmeddelse ud som siger:
jsp:84: \')\' expected. if (Integer.parseInt(session.getAttribute(\"tal\")=1)
Avatar billede disky Nybegynder
05. oktober 2001 - 15:03 #40
<%
if (Integer.parseInt(session.getAttribute(\"tal\")=1))
{%>
<%@ include file=\"soegdeltager.jsp\"%>
<%}%>

Du manglede en ) parantes :-)

Ja min hotmail konto virker fint :)

Kontak mig på ICQ #1413069 hvis du kan, jeg er på om aftenen :)
Avatar billede funkoo Nybegynder
05. oktober 2001 - 15:08 #41
Klart!!
Jeg har haft lidt problemer med icq derfor har jeg lige afinstalleret den. Du får en request i aften så.
Jeg har ikke icq om i hverdagen fordi pga. firmapolitik!!´

Okay
Avatar billede funkoo Nybegynder
05. oktober 2001 - 15:09 #42
Der kom lige en ny fejl!
Invalid left hand side of assignment. if (Integer.parseInt(session.getAttribute(\"tal\")=1))
Avatar billede disky Nybegynder
05. oktober 2001 - 16:07 #43
skriv:

if (Integer.parseInt(session.getAttribute(\"tal\")==1)) 


For at se om 2 tal er ens skal du bruge == og ikke =

Et enkelt = er en tildeling ikke en test.

Så mail mig lige på hotmail.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester