Avatar billede stenmadsen Nybegynder
01. november 2003 - 19:08 Der er 1 kommentar

Hvorfor virker det?

I bookstore2 eksemplet JavaWSTutorial (jwsdp-1.2) bruges <jsp:setProperty> til at sætte et
BookDB bean property'en "database" lig med et objekt. JSP statement'ene  som gør dette er

<jsp:useBean id="bookDB" class="database.BookDB" scope="page">
<jsp:setProperty name="bookDB" property="database" value="${bookDBAO}" />
</jsp:useBean>

hvor bookDBAO initialiseres ved hjælp af en ContextListener.
Jeg har fået eksemplet til af virke i Tomcat 5, men forsøger jeg på samme måde at have et objekt
som parameterværdi i setProperty i min egen applikation får jeg følgende fejl:

org.apache.jasper.JasperException: jsp.error.beans.property.conversion

Det er altså ud til at jeg må have en BeanInfo klasse og en PropertyEditor klasse i min webapplikation
til at omdanne string til objekt hvis  <jsp:setProperty> skal kunne overføre objektet til min hjælpebønne. MEN HVORFOR virker bookstore2
eksemplet? Jeg kan ikke finde noget der ligner en PropertyEditor klasse i bookstore eksemplet.

Som afslutning skal jeg lige bemærke, at jeg har gjort forsøget at flette mine egne test java-klasser, en meget skrabet klasse TestAO som initialiseres via bookstore2's ContextListener og en hjælperbønne Test. Til min store forundring virker det når det er flette ind i bookstore2 eksemplet men ikke i min egen applikation!!!!

Her er den kode jeg har flettet ind i bookstore.jsp

<jsp:useBean id="myBean"class="database.Test" scope="session">
<jsp:setProperty name="myBean" property="myObject" value="${testAO}" />
</jsp:useBean>


Når jeg læser JSP specifkation 2.0 finder jeg følgende

    When assigning from a value given as a request-time attribute, no type
    conversions are applied, as indicated in Section JSP.1.14.2.2.

Så i følge dette burde bookstore eksemplet jo ikke virke! Har jeg overset et eller andet i bookstore2 eksemplet?
Avatar billede stenmadsen Nybegynder
02. november 2003 - 19:02 #1
Nu virker min test applikation! Jeg havde overset et par småting. Men jeg er stadig i tvivl om hvorfor det virker. Jeg har

kigget på samme bookstore tutorial i JWSDP 1.1. Her sættes value med <%=bookDBAO%>  i stedet for ${bookDBAO}

<jsp:useBean id="bookDB" class="database.BookDB" scope="page" >
  <jsp:setProperty name="bookDB" property="database" value="<%=bookDBAO%>" />
</jsp:useBean>

JWSDP 1.1 har en tomcat 1.4.2, og understøtter derfor JSP v1.2, hvorimod JWSDP 1.2 har en tomcat 1.5 som understøtter JSP

v2.0. Jeg har kigget i både JSP v1.2 og JSP v2.0 specifikationerne, men kan ikke finde noget som forklare forskellen på dette

punkt. Og i følge JSP specifikationerne sker der jo ingen type konvertering, og en streng kan vel næppe "cast'es" til et objekt, så hvorfor kan det i det hele taget lades sig gøre? Hvor kan jeg finde dokumentation til dette?
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