Avatar billede martinhrj Nybegynder
18. marts 2003 - 19:15 Der er 9 kommentarer og
2 løsninger

Embedded java i javascript.

Jeg tror dette må være simpelt... men jeg kan åbentbart ikke lige finde min egen fejl...

Jeg har følgende javascript funktion:
<SCRIPT LANGUAGE="JavaScript">
  function addRow(id){
    var tbody = document.getElementById("myTable").getElementsByTagName("TBODY")[0];
        <%
            String id = %> id <% ;
            add(id);
        %>
    var row = document.createElement("TR")
    var td1 = document.createElement("TD")
    td1.appendChild(document.createTextNode(id))
    row.appendChild(td1);
    tbody.appendChild(row);
  }
</script>

--------------------------------------------
Som det nok kan ses, har jeg en javametode der hedder add(String id);  Men det er ikke den der driller! Det er denne linie jeg får en fejl i
String id = %> id <% ;

det første id, er jo det string-object jeg er ved at oprette. Det næste id er det id, der kommer med som parameter i javascript funktionen.

Jeg får følgende fejl.
:\Programmer\Apache Tomcat 4.0\work\localhost\_\cookbook\searchFromIngredient$jsp.java:82: Incompatible type for declaration. Can't convert void to java.lang.String.
String id =

Hvorfor kan jeg ikke gøre som jeg vil???
Avatar billede disky Nybegynder
18. marts 2003 - 19:19 #1
Du har:
<%
            String id = %> id <% ;
            add(id);
        %>

Din id forsøger du at sætte = ingen ting, da id'en udenfor JSP koden jo ikke kan bruges af java delen.
Avatar billede arne_v Ekspert
18. marts 2003 - 19:20 #2
Du er klar over at JSP bliver proceset på servern inden HTML+JavaScript
bliver sendt ud til client, hvor JavaScript bliver processet ?
Avatar billede disky Nybegynder
18. marts 2003 - 19:20 #3
Du skal sætte din java variable id lig med noget i java,
Avatar billede arne_v Ekspert
18. marts 2003 - 19:22 #4
Jeg tror ikke at det kommer til at virke.

id er et argument til en JavaScript funktion som skal kaldes
efter at JSP'en er processet på server og derfmed efter at
add er kaldt.
Avatar billede martinhrj Nybegynder
18. marts 2003 - 19:24 #5
arne_v> Tja... det var jeg jo faktisk klar over... men den smuttede lige, da man jo skal kunne lave dynamiske metoder :)

Kan I hjælpe komme med et forslag til hvordan jeg så får løst dette problem:

Jeg har en <select>, hvor man skal kunne vælge flere værdier. Altså én ad gangen. Hver gang der vælges en værdi, skal det vises på skærmen (p.t. i en tabel), og samtidig skal det smides i en vector i java-delen... Når nu java-delen bliver fortolket på serveren... er der så ingen mulighed for at få input fra brugeren uden at kalde en ny side?
Avatar billede disky Nybegynder
18. marts 2003 - 19:26 #6
enten skal du lave det rent i javascript, eller siden skal reloades fra serveren hvergang der ændres.
Avatar billede arne_v Ekspert
18. marts 2003 - 19:29 #7
Jeg vil tro at du kan lave noget JavaScript der ved valg displayer
en JSP side i en frame. JSP siden viser så den tabel der skal vises
*og* tilføjer noget data på server som en "side-effect".

[men spørg mig ikke om hvodan man laver noget sådant i JavaScript]
Avatar billede arne_v Ekspert
18. marts 2003 - 19:30 #8
Enten kan data gemmes direkte eller så kan du akkumulere i en data-struktur,
som du gemmer i sessionen.
Avatar billede martinhrj Nybegynder
18. marts 2003 - 19:31 #9
Hmm.. hvis der ikke er andre måder, må jeg jo reloade siden :(

Tak for input!

arne_v> kom lige med et svar.. så kan i begge få point :)
Avatar billede arne_v Ekspert
18. marts 2003 - 19:31 #10
Men det at du henter data til en frame burde få det til at se
"naturligt" ud.
Avatar billede arne_v Ekspert
18. marts 2003 - 19:32 #11
svar
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