简体   繁体   English

Spring MVC既不是BindingResult,也不是bean名称的普通目标对象

[英]Spring MVC Neither BindingResult nor plain target object for bean name

For some reason I cannot seem to fix this issue, even after looking at multiple examples on here. 出于某种原因,我似乎无法解决这个问题,即使在此处查看了多个示例之后。

I am trying to handle a form using Spring 3 MVC, but I am getting the following error: 我正在尝试使用Spring 3 MVC处理表单,但是我收到以下错误:

 Neither BindingResult nor plain target object for bean name 'reverseString' available as request attribute

So I am kind of getting what is the problem here, but I failed to solve it. 所以我在这里得到了什么问题,但我没有解决它。 Here is the method in my 这是我的方法

ReverseController class which extends SimpleFormController: 扩展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 defines the controller as follows: 我的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>

This is the form in my reverse.jsp: 这是我的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>

And this is what is being defined in my web.xml: 这就是我的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>

And finally, this is my ReverseString object: 最后,这是我的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);
}

} }

In your reverse.jsp file, you added modelAttribute as reverseString. 在reverse.jsp文件中,您将modelAttribute添加为reverseString。 So while before loading reverse.jsp, it will look for your ReverseString.java object. 因此,在加载reverse.jsp之前,它将查找您的ReverseString.java对象。

You just need to add ReverseString.java object in request scope of your controller method from where you navigate user to reverse.jsp. 您只需要在控制器方法的请求范围中添加ReverseString.java对象,从用户导航到reverse.jsp。

eg 例如

@RequestMapping(value = "/getReverseStringForm")
  public String cmLogin(Model model) {
    model.addAttribute(new ReverseString());
    return "reverse";
  }

As I have found out for my self this exception most of cases appears when path to the controller is wrong. 正如我自己发现的那样,当控制器的路径出错时,大多数情况都会出现。 Or mistake in syntax. 或者语法错误。 So very carefully check if all links in jsp and paths are right. 因此,请仔细检查jsp和路径中的所有链接是否正确。 Because even '/' can be reason of exception. 因为即使'/'也可能是例外的原因。

Try to add @ModelAttribute("reverseString") in your onSubmit method's parameters. 尝试在onSubmit方法的参数中添加@ModelAttribute("reverseString")

protected ModelAndView onSubmit(HttpServletRequest request,
        HttpServletResponse response, @ModelAttribute("reverseString") ReverseString revString, BindException errors)
        throws Exception

For me this error was resolved by declaring 对我来说,这个错误是通过声明来解决的

@ModelAttribute("person")
public Person createFormModelAttribute() {
    return new Person();
}

in the controller. 在控制器中。 And also on the jsp, I refer to the model attributes by referencing the class name: 而且在jsp上,我通过引用类名来引用模型属性:

<form:input  path="person.firstName" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Bean名称为spring mvc的BindingResult或普通目标对象都没有 - Neither BindingResult nor plain target object for bean name spring mvc Spring MVC:BeanResult&#39;user&#39;的BindingResult和普通目标对象都不可用 - Spring MVC : Neither BindingResult nor plain target object for bean name 'user' available as 表单验证错误后的Spring MVC(对于Bean名称,既不是BindingResult也不是普通目标对象) - Spring MVC (Neither BindingResult nor plain target object for bean name) after Form Validation error Spring-mvc 错误:Bean 名称“userBean”的 BindingResult 和普通目标对象都不能用作请求属性 - Spring-mvc error: Neither BindingResult nor plain target object for bean name 'userBean' available as request attribute BeanResult&#39;student&#39;的BindingResult或普通目标对象都不能用作请求属性-Spring MVC - Neither BindingResult nor plain target object for bean name 'student' available as request attribute - Spring MVC Spring MVC产生“ Bean名称&#39;command&#39;的BindingResult和普通目标对象异常都不能用作请求属性” - Spring MVC produces “Neither BindingResult nor plain target object exception for bean name 'command' available as request attribute” Spring 3 MVC:Bean名称的BindingResult和普通目标对象都不可用作请求属性 - Spring 3 MVC:Neither BindingResult nor plain target object for bean name available as request attribute Bean名称的BindingResult和普通目标对象都不能用作请求属性(Spring MVC) - Neither BindingResult nor plain target object for bean name available as request attribute (Spring MVC) Spring MVC:BindingResult和bean名称&#39;POJO&#39;的普通目标对象都不能作为请求属性使用 - Spring MVC : Neither BindingResult nor plain target object for bean name 'POJO' available as request attribute Springframework:BeanResult既不是BindingResult也不是普通目标对象 - Springframework : Neither BindingResult nor plain target object for bean name
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM