23. november 2005 - 15:28Der er
34 kommentarer og 1 løsning
Anv javabean til udtræk af data fra db
jeg vil gerne udtrække data fra db og sætte dem ind i comboboxe.
Når jeg i den første combobox vælger ex en bilmærke, så skal dens modeller, motor størelser og årgange automatisk hentes fra db og sættes ind på comboboxene.
til dette tænkte jeg på at lave en javabean, som vha getProperty, får alle get metoderne til at hente data fra db og sætte dem ind. Lyder det som en god ide ?
som nævnt i det andet spørgsmål, kan du ikke dynamisk loade data i combobox2, afhængig af hvad brugeren vælger i combobox1, da java/jsp-koden forlængst er færdig, og har resulteret i noget html (og evt. javascript).
det du skal benytte er AJAX, som er javascript der asynkront kalder en servlet eller lign, og henter data til combobox2, når brugeren vælger i combobox1.
det er mig bekendt eneste mulighed, medmindre du faktisk laver submit af din jspside hver gang brugeren ændrer i combobox1 .. det giver dog en urolig oplevelse for brugeren
jeg kan godt se fidusen i at Ajax skulle være glimrende til at lave dynamiske web app. Men der er for megen af det kode der skal til, som jeg ikke kender noget til.
for at gøre det mere simpelt, så kunne jeg sige at alle bil mærker har en bestemt motor str, og alle biler er fra årgang mellem 1990-2000. Dvs for disse to skal der ikke meget hokus pokus til.
Det eneste skulle så være at når man valgte et mærke, så skal javabean ud fra mærket hente modellen i db.
man kunne så kalde disse get metoder engang og bagefter lave en submit på jsp siden. How's that !
fsconsult - jeg er nu psykisk klar til at gå i krig med både javascript og xml.
for at kunne lave javascript i eclipse, hvilken type klasse skal jeg vælge... jeg tænker på om jeg skal vælge en java klasse, jsp klasse, html, eller en alm fil.
tjekker du koderne for mig efterhånden som jeg får lavet lidt.. er ikke bekendt med javascript syntaks
1. lidt jsp kode. Her vil jeg gerne lave en event vha. metoden validate() ved onkeyup. ------------------------------------------------------------------------------------- <TR> <TD align='center' width='30%'> <FORM method='get' name='bilmaerke' onkeyup='validate()'> <table
border='0' cellspacing='5' cellPadding='3'> <tr> <td colspan='2'> bilmaerker </td> <td> <SELECT name="Bilmaerker"> <OPTION> Audi </OPTION> <OPTION> BMW </OPTION> <OPTION> FORD </OPTION> <OPTION> OPEL </OPTION> <OPTION> SKODA </OPTION> <OPTION> VW </OPTION> </SELECT> </td> </tr> </TR>
----------------------------------------------------- 2.Et XMLHttpRequest objekt laves og konfigureres. -----------------------------------------------------
var req;
function validate() { var url = "validate?id=" + escape(target.value); if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.open("GET", url, true); req.onreadystatechange = callback; req.send(null); }
---------------------------------------------------- 3.Request bliver bearbejdet af validateServlet. ----------------------------------------------------
public class ValidateServlet extends HttpServlet {
/* SKAL FORB TIL DB OPRETTES HER I METODEN ELLER FRA JAVA KLASSE ???? */
------------------------------------------------------------------ 4.XMLHttpRequest objekt kalder callback metoden som er defineret i pkt 2 for at videregive resultatet ------------------------------------------------------------------
function callback() { if (req.readyState == 4) /*XMLHttpRequest kald fuldført */ { if (req.status == 200) /*succesfuld HTTP interaktion*/ { parseMessages (); }
else { clearTable(); } }
}
------------------------------------------------------------------ 5. Hvis status= 200 er sand så kaldes denne metode parseMessages() ------------------------------------------------------------------
function parseMessages () { var maerke=req.responseXML.getElementsByTagName("maerke")[0];
/* VED IKKE HVAD DER SKAL STÅ HER */
}
----------------------------------------------------------------- 6. HTML DOM skal opdateres med de rigtige oplysninger -----------------------------------------------------------------
Jeg ved godt at jeg ikk skal poste dem her i java afdelingen, men jeg havde troet i starten at jeg kunne nøjes med en bean, hvilket jeg ikke kunne. Beklager
Nogen der gider at tjekke dem for mig. OG komme med eventuelle rettelser og forslag
AJAX er jo stadig et ekstra server roundtrip bare "blinkfri".
Der er det alternativ som hedder at outputte det hele fra JSP/servlet/bean og manipulere værdierne i den ene SELECT når man vælger en ny værdi i den anden SELECT ved hjælp af JavaScript.
Ja. Men når du vælger bilbærke i den første combo box så ændres mulighederne i den anden combo box til kun at være modeller for det mærke. Var det ikke den type effekt du ønskede ?
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.