Java SpringMVC既不是BindingResult,也不是bean名称的普通目标对象
出于某种原因,我似乎无法解决这个问题,即使在看了这里的多个示例之后 我试图使用Spring 3 MVC处理表单,但出现以下错误:Java SpringMVC既不是BindingResult,也不是bean名称的普通目标对象,java,spring,model-view-controller,Java,Spring,Model View Controller,出于某种原因,我似乎无法解决这个问题,即使在看了这里的多个示例之后 我试图使用Spring 3 MVC处理表单,但出现以下错误: Neither BindingResult nor plain target object for bean name 'reverseString' available as request attribute 所以我有点明白这里的问题是什么,但我没能解决它。这里是我的方法 扩展SimpleFormController的ReverseController类: p
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;
}
My 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>
这是my 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>
要反转的字符串:
这就是my 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>
弹簧反向串
reverse.jsp
应用程序
调度员
1.
应用程序
*.app
上下文配置位置
/WEB-INF/app-servlet.xml
org.springframework.web.context.ContextLoaderListener
最后,这是我的反向限制对象:
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);
}
公共类反向限制{
公共字符串stringToReverse;
公共字符串反转字符串;
公共反向限制(字符串rawString){
this.reversedString=反向限制(stringToReverse);
}
公共字符串getStringToReverse(){
返回stringToReverse;
}
public void setStringToReverse(字符串stringToReverse){
this.stringToReverse=stringToReverse;
}
公共字符串反向限制(字符串rawString){
如果(rawString==null | | rawString.length()尝试在onSubmit方法的参数中添加@ModelAttribute(“reverseString”)
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, @ModelAttribute("reverseString") ReverseString revString, BindException errors)
throws Exception
在reverse.jsp文件中,您添加了modelAttribute作为reverseString。
因此,在加载reverse.jsp之前,它将查找ReverseString.java对象
您只需要在控制器方法的请求范围中添加ReverseString.java对象,从这里将用户导航到reverse.jsp
e、 g
正如我自己发现的,大多数情况下,当控制器路径错误或语法错误时,都会出现此异常。因此,请非常仔细地检查jsp中的所有链接和路径是否正确。因为即使是“/”也可能是异常的原因。对于我来说,此错误通过声明
@ModelAttribute("person")
public Person createFormModelAttribute() {
return new Person();
}
在controller.和jsp中,我通过引用类名来引用模型属性:
<form:input path="person.firstName" />
您混合了Spring MVC 2.x和3.x概念吗?--请发布完整的控制器类。好的,现在我添加了这个。@RequestMapping(value=“/reverse.html”,method=RequestMethod.GET)公共字符串simpleForm(Model Model){Model.addAttribute(new ReverseString());返回“reverse”}我在reverse.jsp表单上没有使用modeldattribute,而是使用commandName=“reverseString”。我仍然会遇到相同的错误。
<form:input path="person.firstName" />