This is my first experience with Spring. When I was reading the “Spring Live” all worked Ok.Equinox works well too. But in my project I have strange problem with binding. And I don’t see the difference between book example and my project.
There is filePersonList.jsp with one and very easy form which contains one input tag only:
I use the “searchParameters” as command object for the form. The class SearchParameters has all needed fields:Code:<form method="post" action="<c:url value="/filePersonList.html"/>" name="searchParametersForm"> <table class="search-panel-form" width="100%" cellpadding="0" cellspacing="0"> <tr> <th>Text:</th> <td> <spring:bind path="searchParameters.field"> <input type="text" name="field" id="field" value="${status.value}"/> <span class="fieldError">${status.errorMessage}</span> </spring:bind> </td> </tr> <tr> <td class="search-panel-button-cell"> <input name="start" class="panel-button" type="submit" value="Start"> </td> <td class="search-panel-button-cell"> <input name="clear" class="panel-button" type="submit" value="Clear"> </td> </tr> </table> </form>
There is information about it in the action-servlet.xmlCode:public class SearchParameters extends BaseObject { private String field; public String getField() { return field; } public void setField( String field ) { this.field = field; } }
And sure, I have the class FilePersonListController with implemented formBackingObject methodCode:<bean id="filePersonListController"class="com.company.web.FilePersonListController"> <property name="commandName"><value>searchParameters</value></property> <property name="commandClass"><value> com.company.web.SearchParameters</value></property> <property name="formView"><value>filePersonList</value></property> <property name="successView"><value>redirect:filePersonList.html</value></property> </bean>
I can see my form well while I don’t use the spring:bind. Something like that:Code:public class FilePersonListController extends SimpleFormController { private static Log log = LogFactory.getLog( FilePersonListController.class ); public ModelAndView onSubmit{...}; protected Object formBackingObject( HttpServletRequest request ) throws ServletException { log.debug( "CALL - new SearchParameters()" ); return new SearchParameters(); } }
When I add the binding I have exception:Code:<input type="text" name="field" id="field" value="111"/>
The exception is:
Could you help me? What I did wrong? I use JDK 1.5, Spring 1.1.4, Tomcat 5.5.9Code:javax.servlet.jsp.JspTagException: Neither Errors instance nor plain target object for bean name 'searchParameters' available as request attribute at org.springframework.web.servlet.tags.BindTag.doStartTagInternal(BindTag.java:108) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:71) at org.apache.jsp.filePersonList_jsp._jspService(org.apache.jsp.filePersonList_jsp:101) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.company.web.MessageFilter.doFilter(MessageFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:97) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:247) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:839) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:616) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:543) at org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:390) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:350) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.company.web.MessageFilter.doFilter(MessageFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
Thanks in advance.


Equinox works well too. But in my project I have strange problem with binding. And I don’t see the difference between book example and my project.
Reply With Quote