[英]Neither BindingResult nor plain target object for bean name spring mvc
[英]Spring MVC Neither BindingResult nor plain target object for bean name
出於某種原因,我似乎無法解決這個問題,即使在此處查看了多個示例之后。
我正在嘗試使用Spring 3 MVC處理表單,但是我收到以下錯誤:
Neither BindingResult nor plain target object for bean name 'reverseString' available as request attribute
所以我在這里得到了什么問題,但我沒有解決它。 這是我的方法
擴展SimpleFormController的ReverseController類:
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
ReverseString revString = (ReverseString) command;
ModelAndView mav = new ModelAndView();
ModelMap map = new ModelMap();
map.addAttribute("reverseString", revString);
mav.addAllObjects(map);
return mav;
}
我的app-servlet.xml定義控制器如下:
<bean name="/reverse.app" class="ReverseController">
<property name="commandName" value="reverseString"></property>
<property name="commandClass" value="ReverseString" />
<property name="successView" value="reverseResult" />
<property name="formView" value="reverse" />
</bean>
這是我的reverse.jsp中的表單:
<form:form method="POST" modelAttribute="reverseString" action="handleForm">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td>String to be reversed:</td>
<td><form:input path="stringToReverse" />
</td>
<td><form:errors path="stringToReverse" cssClass="error" />
</td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>
這就是我的web.xml中定義的內容:
<web-app>
<display-name>Spring Reverse String</display-name>
<welcome-file-list>
<welcome-file>reverse.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>Dispatcher</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>*.app</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
最后,這是我的ReverseString對象:
public class ReverseString {
public String stringToReverse;
public String reversedString;
public ReverseString(String rawString) {
this.reversedString = reverseString(stringToReverse);
}
public String getStringToReverse() {
return stringToReverse;
}
public void setStringToReverse(String stringToReverse) {
this.stringToReverse = stringToReverse;
}
public String reverseString(String rawString) {
if(rawString == null || rawString.length() <= 1) return rawString;
return reverseString(rawString.substring(1)) + rawString.charAt(0);
}
}
在reverse.jsp文件中,您將modelAttribute添加為reverseString。 因此,在加載reverse.jsp之前,它將查找您的ReverseString.java對象。
您只需要在控制器方法的請求范圍中添加ReverseString.java對象,從用戶導航到reverse.jsp。
例如
@RequestMapping(value = "/getReverseStringForm")
public String cmLogin(Model model) {
model.addAttribute(new ReverseString());
return "reverse";
}
正如我自己發現的那樣,當控制器的路徑出錯時,大多數情況都會出現。 或者語法錯誤。 因此,請仔細檢查jsp和路徑中的所有鏈接是否正確。 因為即使'/'也可能是例外的原因。
嘗試在onSubmit方法的參數中添加@ModelAttribute("reverseString")
。
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, @ModelAttribute("reverseString") ReverseString revString, BindException errors)
throws Exception
對我來說,這個錯誤是通過聲明來解決的
@ModelAttribute("person")
public Person createFormModelAttribute() {
return new Person();
}
在控制器中。 而且在jsp上,我通過引用類名來引用模型屬性:
<form:input path="person.firstName" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.