【问题标题】:Spring 3 MVC error: Neither BindingResult nor plain target object for bean name 'user' availableSpring 3 MVC 错误:Bean 名称“用户”的 BindingResult 和普通目标对象都不可用
【发布时间】:2011-10-19 14:46:39
【问题描述】:

我知道此问题可能已在其他地方得到解决,但我无法为我的问题找到令人满意的解决方案。顺便说一句,我正在使用 spring 3.0.2

登录.jsp

<form:form id="_LoginForm" name="LoginForm" modelAttribute="user" action="login" method="POST">
    <form:input path="username" value=""/>
    <form:input path="password" value=""/>
    <input type="submit" value="Submit"/>

LoginController.java

@RequestMapping(value="login", method=RequestMethod.POST)
public String login(@ModelAttribute("user") User user, BindingResult result) {
    System.out.println("recd request");
    return null;
}

当我尝试访问 login.jsp 页面时,出现以下错误:

java.lang.IllegalStateException: Bean 名称“用户”的 BindingResult 和普通目标对象都不能用作请求属性
    在 org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141)
    在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
    在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194)
    在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160)
    在 org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:123)
    在 org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:409)
    在 org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140)
    在 org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)

【问题讨论】:

标签: spring-mvc


【解决方案1】:

您能否在控制器中提供您的 RequestMethod.GET 方法? 只是想确保您也在 GET 方法中添加了 modelAttribute。

【讨论】:

  • 是否建议添加一种设置方法,将“用户”属性放入模型映射,然后重定向到登录页面?
【解决方案2】:

我添加了以下方法来完成这项工作,但我觉得必须有更好的方法来完成这项工作,而不必每次都编写设置方法。

applicationContext.xml

<mvc:view-controller path="/" view-name="index" />

index.jsp

<jsp:forward page="index.action"/>

LoginController.java

@RequestMapping(value="index.action", method=RequestMethod.GET)
public String setupLogin(Map<String, Object> modelMap) {        
    modelMap.put("user", new User());
    return "Login";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多