2013-02-04 57 views
0

我一直在努力處理以下錯誤一段時間。Spring Webflow:字段類型是必需的

java.lang.IllegalArgumentException: The field type is required 

我有一個基本的屏幕流設置與3個屏幕。

  • 屏幕1:身份

  • 屏幕2:接觸信息

  • 屏幕3:摘要

從屏幕1 I採取在文本字段這樣:

<form:form modelAttribute="booking" action="${flowExecutionUrl}" method="post"> 
    User Name: 
    <form:input type="text" id="username" name="username" path="username"/> 
    <input type="submit" name="_eventId_next" value="next" /> 
    <input type="submit" name="_eventId_cancel" value="Cancel" /> 
</form:form> 

它在達到摘要時有效,因爲我可以在摘要屏幕上顯示$ {booking.username}的內容。

但在屏幕2上,當我嘗試完全相同的事情,但與不同的數據字段上面指定的錯誤。

屏幕2:

<form:form modelAttribute="booking" action="${flowExecutionUrl}" method="post"> 
    Address 1: 
    <form:input type="text" id="address1" name="address1" path="address1"/> 
    <input type="submit" name="_eventId_next" value="Next"/> 
    <input type="submit" name="_eventId_cancel" value="Cancel"/> 
</form:form> 

形式標籤指明爲:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

大多數代碼可以在我先前的問題被看作:

Full Code

相同當我嘗試將表單標籤添加到選項下拉框字段a時發生錯誤這樣的。

<form:select id="requestType" name="requestType" path="requestType"> 
    <form:option value="0"></option> 
    <form:option value="1">Oprion 1</option> 
    <form:option value="2">Option 2</option> 
</form:select> 

相反選項標記的我也試過

<form:input type="text" label="" value="0"/> 

都拿出指向這些行作爲一個錯誤相同的錯誤。

謝謝。

編輯:

堆棧跟蹤: 例外

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.execution.FlowExecutionException: Exception thrown in state 'enterContactDetails' of flow 'flow-config' 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

org.springframework.webflow.execution.FlowExecutionException: Exception thrown in state 'enterContactDetails' of flow 'flow-config' 
    org.springframework.webflow.engine.impl.FlowExecutionImpl.wrap(FlowExecutionImpl.java:571) 
    org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:262) 
    org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) 
    org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
    org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

java.lang.IllegalStateException: Exception occurred rendering view org.springframework.web.servlet.view.JstlView: name 'account/BookingContactDetailsScreen'; URL [/WEB-INF/views/account/BookingContactDetailsScreen.jsp] 
    org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:191) 
    org.springframework.webflow.engine.ViewState.render(ViewState.java:296) 
    org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243) 
    org.springframework.webflow.engine.ViewState.resume(ViewState.java:221) 
    org.springframework.webflow.engine.Flow.resume(Flow.java:545) 
    org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258) 
    org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) 
    org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
    org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

org.apache.jasper.JasperException: java.lang.IllegalArgumentException: The field type is required 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) 
    org.springframework.webflow.mvc.servlet.ServletMvcView.doRender(ServletMvcView.java:50) 
    org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:187) 
    org.springframework.webflow.engine.ViewState.render(ViewState.java:296) 
    org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243) 
    org.springframework.webflow.engine.ViewState.resume(ViewState.java:221) 
    org.springframework.webflow.engine.Flow.resume(Flow.java:545) 
    org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258) 
    org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) 
    org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
    org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

java.lang.IllegalArgumentException: The field type is required 
    org.springframework.util.Assert.notNull(Assert.java:112) 
    org.springframework.webflow.mvc.view.ConvertingPropertyEditorAdapter.<init>(ConvertingPropertyEditorAdapter.java:48) 
    org.springframework.webflow.mvc.view.BindingModel.findSpringConvertingPropertyEditor(BindingModel.java:277) 
    org.springframework.webflow.mvc.view.BindingModel.getFormattedValue(BindingModel.java:235) 
    org.springframework.webflow.mvc.view.BindingModel.getFieldValue(BindingModel.java:142) 
    org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:120) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:178) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:198) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:164) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:127) 
    org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421) 
    org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
    org.apache.jsp.WEB_002dINF.views.account.BookingContactDetailsScreen_jsp._jspx_meth_form_005finput_005f0(BookingContactDetailsScreen_jsp.java:230) 
    org.apache.jsp.WEB_002dINF.views.account.BookingContactDetailsScreen_jsp._jspx_meth_form_005fform_005f0(BookingContactDetailsScreen_jsp.java:127) 
    org.apache.jsp.WEB_002dINF.views.account.BookingContactDetailsScreen_jsp._jspService(BookingContactDetailsScreen_jsp.java:85) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) 
    org.springframework.webflow.mvc.servlet.ServletMvcView.doRender(ServletMvcView.java:50) 
    org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:187) 
    org.springframework.webflow.engine.ViewState.render(ViewState.java:296) 
    org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243) 
    org.springframework.webflow.engine.ViewState.resume(ViewState.java:221) 
    org.springframework.webflow.engine.Flow.resume(Flow.java:545) 
    org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258) 
    org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) 
    org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) 
    org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174) 
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
+0

你可以發佈stacktrace。 –

+0

我已經按照你的要求添加了 – Sheogora

+0

我懷疑這是搞砸了,但是你是否意識到你不需要'form = form'中的action =「$ {flowExecutionUrl}」或者'method =「post」' '?另外,'input'字段上的'name'屬性也不正常。我想知道這是否會令人困惑。 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#spring-form.tld.input – dbreaux

回答

-1

你並不需要提供形式的行動。你應該有你的表單開標籤看起來像樣本如下:

<form:form method="POST" modelAttribute="booking"> 
相關問題