Hvorfor virker det?
I bookstore2 eksemplet JavaWSTutorial (jwsdp-1.2) bruges <jsp:setProperty> til at sætte etBookDB 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?
