webForumDet fria alternativet

kommer ej på bra rubrik, ett fel som jag ej hittar helt enkelt

Java

5 svar · 598 visningar · startad av Broms

Medlem sedan sep. 2002188 inlägg
Frågan#1
        <b>Genre:&nbsp;</b><input type="text" name="addgenre" /><input type="button" onclick="window.location='index.jsp?ag=document.getElementById(addgenre).value'" value="Lägg till Genre" /><br />
        <% if(request.getParameter("ag") != null && !request.getParameter("ag").equals("")){ Genre.insert(request.getParameter("ag")); } %>

Det jag ovan försöker åstadkomma är att jag skickar värdet i ett input vidare till samma sida som jag kommer ifrån, och sedan kollar ifall värdet ej är null eller "", om detta är sant så skall jag köra metoden Genre.insert vilket insertar datan i databasen.

Jag vet att ovanstående index.jsp?ag=document.getelement... ej fungerar då det ej är värdet utan uttrycket som skickas till index.jsp, dock skrev jag så för att försöka åskådliggöra vad jag är ute efter..

några ideer på hur jag löser detta?

EDIT: jag såg att den klipper addgenre i getElementById-metoden, dock skall det såklart skrivas ihop och görs så i min kod.

Medlem sedan apr. 200357 inlägg
#2

Varför krångla till det så med javascript, följande borde väl funka lika bra:

<form action="index.jsp" method="get">
    <input name="ag" type="text"/><br/>
    <input type="submit" value="Lägg till Genre"/>
</form>
<% 
if (request.getParameter("ag") != null && !"".equals(request.getParameter("ag")) {
    Genre.insert(request.getParameter("ag"));
}
%>

Är ju ungefär som din kod förutom att jag inte kör javascriptet, annars ser jag inga fel i din kod, du får inga felmeddelanden?

Medlem sedan sep. 2002188 inlägg
#3

Jag provade med liknanden innan, och körde då med en länk som gick till index.jsp?<% reguest.getParameter("ag") %>, men det gick inte heller..

vid ej ifylld ruta så kommer man till index.jsp som vanligt, men om man fyller i rutan så skrivs allt utom formuläret ut som vanligt.. det blir då:

<form action="index.jsp"

och ingen Genre läggs till :\

Medlem sedan sep. 2002188 inlägg
#4

jag provade att flytta upp formuläret och lade det nu bakom ett annat formulär på sidan.. men då är det andra saker längre ner som inte skrivs ut som de skall, och sidan avslutas då istället med

<input type="button" value="Editera" onclick="window.lo

som skrivs ut efter sista inputfältet... why?!?!

EDIT: jag förflyttade jsp-koden upp till en try-catch-sats och därmed funkade det.. varför det blev som det blev förstår jag dock fortfarande ej, och det får någon gärna förklara.. :)

Medlem sedan sep. 2002188 inlägg
#5

det var tydligen svårt :p

Medlem sedan sep. 2001961 inlägg
#6

Du borde får en rejäl stacktrace i Tomcat-loggen (eller vilken jsp-motor du nu kör). Kan du dumpa ut den?

Om du vill skriva ut något så använder du antingen out-objektet som instansieras automatiskt på alla jsp-sidor eller så använder du tag-formatet <%= "Skriv ut en sträng" %>. Allting som ligger inom <% %> körs på servern och inte på klienten. Alltså läggs inte parametern "ag" till i Genre innan du anropar sidan igen.

När jag håller på med formulär så brukar jag dels alltid använda mig av "POST" som metod och inte "GET". Om det handlar om att hämta eller lämna data i en databas så bygger jag alltid min applikation på mönstret MVC (Model-View-Controller). View i det faller är din JSP-sida som innehåller ett formulär. Formuläret postas sedan till en Controller-servlet som använder sig av ett Model-objekt som hanterar ner och uppläsning från databasen.

När Model-objektet har kört färdigt så får Controllern meddelande om detta och beroende på vad som hänt så öppnar den rätt sida. Det kan vara samma som förut, men med felkod (t.ex. "Personnummret har fel kontrollsiffra.", "BH-storlek saknas") eller helt enkelt nästa sida i kön.

Fördelen med denna typ av uppdelning är att om jag t.ex. har en lång rad med formulär som skall fyllas i så kan jag använda samma Controller och skicka med en identifierare för vilken modell jag vill använda.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)