I have a simple page for editing some form properties. It works. There's a select box, a multibox, single-select select and a text input field. Now I tried to "Tiles-ify" it, just using Tiles to add some silly decorations around the actual form. Using tiles seems to break the form, the exception I get is

16:49:43,714 ERROR [Engine] ----- Root Cause -----
javax.servlet.ServletException: Cannot find bean choice in any scope
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:533)
at org.apache.jsp.inputs_0002dcontent_jsp._jspService(inputs_0002dcontent_jsp.java:103)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:575)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:498)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:822)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:398)
at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137)
at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177)
at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756)
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473)
at org.apache.jsp.template_jsp._jspx_meth_tiles_insert_1(template_jsp.java:197)
at org.apache.jsp.template_jsp._jspx_meth_html_html_0(template_jsp.java:109)
at org.apache.jsp.template_jsp._jspService(template_jsp.java:63)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:575)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:498)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:822)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:398)
at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137)
at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177)
at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756)
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:881)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473)
at org.apache.jsp.inputs_jsp._jspx_meth_tiles_insert_0(inputs_jsp.java:99)
at org.apache.jsp.inputs_jsp._jspService(inputs_jsp.java:57)


the JSP page for the form looks like:

<html:form action="/TilesSaveInputs" onsubmit="return validateInputsForm(this);">

 <bean:write name="inputsForm" property="counter" /><br>
 <html:hidden property="counter" />

 <p>Select + optionsCollection:<br>

 <html:select property="selectedChoicesForSelect" multiple="true" size="5">
        <html:optionsCollection property="allChoices" value="key" label="name"/>
 </html:select><br>

 <p>Multibox:<br>
 <!-- THE FOLLOWING BREAKS THE PAGE -->

 <logic:iterate id="choice" name="inputsForm" property="allChoices">
   <html:multibox property="selectedChoicesForMultibox">
     <bean:write name="choice" property="key"/>
   </html:multibox>
   <bean:write name="choice" property="name"/><br>
 </logic:iterate>

 <p>Single select + optionsCollection:<br>

 <html:select property="selectedChoiceForSingleSelect">
        <html:optionsCollection property="allChoices" value="key" label="name"/>
 </html:select><br>

 <p>Plain text field, validated using validator<br>
 e-mail:<html:text property="text"/><br>

 <p>
 <html:link action="/Start.do">Back</html:link><br>

 <p>
 <html:submit/>
</html:form>

The part which breaks the page is the multibox, it's iterator and use of iterator's choice object. If I take that part out the page works fine with Tiles, I can make the selections etc.

The page works fine also with the multibox as long as I do not use Tiles. With tiles I use the same Actions, JSP code for forming the output is straight copy-paste, there's no difference with the action definitions in struts-config.xml. The only difference is the use of Tiles. I wonder what about Tiles causes this to break?

_________________________________________________________________
Add photos to your e-mail with MSN 8. Get 2 months FREE*. http://join.msn.com/?page=features/featuredemail



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to