Avatar billede giereck Nybegynder
29. januar 2005 - 15:04 Der er 5 kommentarer

2 forms på en .jsp side?

Jeg har en jsp side hvor jeg har 2 html forms. Når jeg poster i den ene form viser siden en anden form præcis som den skal.

if(request.getMethod().equals("POST"))

Men når jeg så har udfyldt form nr 2 og trykker submit, bliver der postet i begge forms.
Jeg har prøvet at undgå dette men uden held. Så spørgsmålet er altså: hvordan kan jeg bygge min if sætning til den 2. form så der kun bliver postet én gang?
Avatar billede arne_v Ekspert
29. januar 2005 - 15:30 #1
Så vidt jeg ved kan en browser ikke submitte 2 forme samtidigt.

Kan du vise lidt mere kode og forklare lidt mere om hvad der sker ?
Avatar billede giereck Nybegynder
29. januar 2005 - 15:39 #2
Her har du hele siden:

<%
    String rejsenr = request.getParameter("rejsenr");
    int intRejsenr = 0;
    boolean tjek = false;
    database.Rejse rejse = null;
    int tal = 0;
%>





<form method=post action=./?side=rejse>
    <table align="center">
        <tr>
            <td></td>
            <td>Skriv rejsenummeret på den rejse du vil slette.</td>
        </tr>
        <tr>
            <td>RejseNr:</td>
            <td><input type=text name=rejsenr></td>
        </tr>
        <tr>
            <td><input type=reset value=reset></td>
            <td><input type=submit value=Ok></td>
        </tr>
    </table>
</form>

<%
    if(request.getMethod().equals("POST") && rejse == null)
    {
        if(rejsenr !=null)
        {
            if(rejsenr.equals(""))
            {
                out.println("<span class=\"fejlbesked\">Skriv et rejsenummer!</span><BR>");
            }
            else
            {
                boolean ugyldigtRejsenr = false;
               
                try
                {
                      intRejsenr = Integer.parseInt(rejsenr);
                }
                catch(Exception e)
                {
                      ugyldigtRejsenr = true;
                    }

            %>
            <%
           
                if(ugyldigtRejsenr)
                {
                    out.println("<span class=\"fejlbesked\">Rejse ikke slettet!</span><BR>");
                }
                else
                {
            %>
                    <jsp:useBean id="db" scope="page" class="database.RejseStyring">
                        <jsp:setProperty name="db" property="userName" value="<%=(String)session.getAttribute("user")%>"/>
                        <jsp:setProperty name="db" property="password" value="<%=(String)session.getAttribute("passwd")%>"/>
                        <jsp:setProperty name="db" property="connectionUrl" value="<%=(String)session.getAttribute("url")%>"/>
                    </jsp:useBean>
            <%
                    rejse = db.hentRejseResultat(intRejsenr);
                   
            %>       
    <%
                }
            }
        }
    }   
    %>
    <%
            if(rejse != null)
            {
        %>
            <form method=post action=./?side=rejse>
                <table align="center">
                    <tr>
                        <td>RejseNr:</td>
                        <td><input type=text name=rejsenr value="<%=rejse.getRejsenr()%>"></td>
                    </tr>
                    <tr>
                        <td>Land:</td>
                        <td><input type=text name=rejsenr value="<%=rejse.getLand()%>"></td>
                    </tr>
                    <tr>
                        <td>Omraade:</td>
                        <td><input type=text name=omraade value="<%=rejse.getOmraade()%>"></td>
                    </tr>
                    <tr>
                        <td>Pris:</td>
                        <td><input type=text name=pris value="<%=rejse.getPris()%>"></td>
                    </tr>
                    <tr>
                        <td>Minantal:</td>
                        <td><input type=text name=minantal value="<%=rejse.getMinantal()%>"></td>
                    </tr>
                    <tr>
                        <td>Maxantal:</td>
                        <td><input type=text name=maxantal value="<%=rejse.getMaxantal()%>"></td>
                    </tr>
                    <tr>
                        <td>Hotel:</td>
                        <td><input type=text name=hotel value="<%=rejse.getHotel()%>"></td>
                    </tr>
                    <tr>
                        <td>Afrejsedato:</td>
                        <td><input type=text name=afrejsedato value="<%=rejse.getAfrejsedato()%>"></td>
                    </tr>
                    <tr>
                        <td>Hjemkomstdato:</td>
                        <td><input type=text name=hjemkomstdato value="<%=rejse.getHjemkomstdato()%>"></td>
                    </tr>
                    <tr>
                        <td>Billede:</td>
                        <td><input type=text name=billede value="<%=rejse.getBillede()%>"></td>
                    </tr>
                    <tr>
                        <td>Beskrivelse:</td>
                        <td><input type=text name=beskrivelse value="<%=rejse.getBeskrivelse()%>"></td>
                    </tr>
                    <tr>
                        <td><input type=reset value=reset></td>
                        <td><input type=submit value=Slet></td>
                    </tr>
                </table>
            </form>
        <%   
               
            }
        %>
       
        <%
            if(request.getMethod().equals("POST") && db.taelop(tal) == 1)
            {
                out.println("Det virker squ!");
        %>
   
   
   
    <%
        }   
    %>
Avatar billede giereck Nybegynder
29. januar 2005 - 16:11 #3
Hmm.. jeg fik vist skrevet at den submitter begge forms når jeg trykker submit i form nr 2, men det er faktisk ved første submit at den tror den skal poste 2 gange.

Siden er en del af et større projekt man kan bestille rejser. Med denne side skal man kunne slette rejser som allerede er oprettet og ligger i databasen. Man starter med at skrive et rejse nummer og informationen om den rejse bliver så vist på siden. Når man vil godkende sletningen af rejsen trykker man slet som er den 2. submit.

Så snart jeg har submittet den første form bliver der sendt et rejsenummer over til min RejseStyring bønne. Den trækker så data ud fra databasen og lægger dem over i et Rejse objekt, hvorefter obejktet bliver sendt med tilbage til jsp siden. Fra dette objekt kalder jeg så nogle get- metoder i form nr 2. Her var det så at jeg ville kunne slette rejsen ved at kalde en metode over i min bønne.
Avatar billede europe Nybegynder
30. januar 2005 - 16:49 #4
Kan ikke helt gennemskue det...

Måske det var nemmere at gennemskue hvis din første form - submiter til en anden side - som checker rejsenr og laver den nye form hvis alt er ok.

Men jeg kigger lidt videre på det.
Avatar billede giereck Nybegynder
01. februar 2005 - 17:35 #5
Ok nu har jeg fået det til at virke.. Jeg blev nødt til at skrive hele siden om.. Men et stor tak til jer der kiggede på det!
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