例外:BindingResult和bean名称都没有普通的目标对象

时间:2014-08-07 07:35:30

标签: java spring

下面的register.jsp是我的用户注册页面,想要使用hibernate将用户详细信息存储到db,但是当register.jsp文件运行时,它会一直显示异常。我已将表单操作映射到控制器中。

register.jsp文件是:                 在此文件中,用户详细信息和我给出了在EmployeeController中映射的操作“reg”。

Register.jsp

<form:form method="POST" action="reg.html">
    <table border="0">
        <tr>
            <td colspan="2" align="center"><h2>Spring MVC Form Demo - Registration</h2></td>
        </tr>
        <tr>
            <td>User Name:</td>
            <td><form:input path="username" /></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><form:password path="password" /></td>
        </tr>
        <tr>
            <td>E-mail:</td>
            <td><form:input path="email" /></td>
        </tr>

        <tr>
            <td colspan="2" align="center"><input type="submit" value="Register" /></td>
        </tr>
    </table>
</form:form>

EmployeeController.java

@Controller
public class EmployeeController {
 @Autowired
    private UserService userService;
        @RequestMapping(value = "/reg", method = RequestMethod.POST)
    public ModelAndView saveUser(@ModelAttribute("command") UserBean userBean, 
            BindingResult result) {
        User user = prepareModelUser(userBean);
        userService.addUser(user);
        return new ModelAndView("RegistrationSuccess.html");
    }
}

来自register.jsp我试图调用EmployeeController.java中的saveUser方法但是每当我运行register.jsp时我都会收到异常

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute.

我尝试使用commandName和action在表单和我基于它映射的控制器中。尽管如此,它给出了如上所述的相同例外。所以我想如何配置控制器提交这个register.jsp表单。是我需要添加配置控制器显式或什么..并在EmployeeController.java我有一个另一个窗体控制器与相同的默认“命令”表单提交。工作正常。但在这里我有搜索的可能性。但不起作用。

1 个答案:

答案 0 :(得分:0)

您在表单标记中缺少commandName,并且您在服务器端方法中出错了,请执行以下操作

表格

<form:form method="POST" action="reg.html" commandName="userBean" modelAttribute="userBean"  >

在服务器端就像

一样
public ModelAndView saveUser(@ModelAttribute("userBean") UserBean userBean