2014-09-03 31 views
0

我想從html窗體切換到彈簧窗體,以便我可以使用消息屬性,我認爲這是一個非常酷的功能。但我遇到錯誤Http 500:使用彈簧形式的正確方法

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 19 

18:    <form:form action="example" method="post" modelAttribute="example" > 
19:     UserName<form:input path="email" /> 
20:     Password<form:input path="password" /> 
21:    </form:form>  


Stacktrace: 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465) 
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:727) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
root cause 

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'example' available as request attribute 

我在論壇中尋找其他線程,但找不到原因。你能建議我在哪裏解決它? 這是我的控制器代碼:

@RequestMapping(value="/example", method=RequestMethod.POST) 
public String example(@ModelAttribute("example") UserAccount aUser, BindingResult result, Model model) { 
    model.addAttribute("example", aUser); 
    return ""; 
} 
+0

可能重複的[java.lang.IllegalStateException:無論是BindingResult還是可用作請求屬性的bean名'category'的普通目標對象](http://stackoverflow.com/questions/21790656/java-lang-illegalstateexception-neither -bindingresult-nor-plain-target-object-f) – 2014-09-03 23:55:49

+0

@SotiriosDelimanolis:在論壇上提出了很多關於這個問題的類似問題。我搜索並嘗試,但我沒有找到原因之前,我問... – 2014-09-04 00:00:51

回答

0

首先,忘記你張貼的處理方法。在這裏發生的事情完全沒有涉及。

其次,錯誤狀態

既不BindingResult也不對bean名稱 '示例' 可作爲請求屬性純目標對象

因此,當您的JSP代碼

<form:form action="example" method="post" modelAttribute="example" > 
    UserName<form:input path="email" /> 
    Password<form:input path="password" /> 
</form:form>  

正在由JSP Servlet呈現,並且進程d by Spring,no HttpServletRequest歸因於名稱example存在。這意味着你還沒有添加一個。

所以還是控制器返回上面的JSP的JSP視圖名稱(如果不存在,創建它),並添加一個HttpServletRequest屬性或命名爲exampleUserAccount類型和模型屬性。例如

model.addAttribute("example", new UserAccount()); 

Spring將使用此(命令)的對象,以與對應input字段創建HTML <form>

+0

謝謝你的解決方案 – 2014-09-04 00:35:50