在Spring MVC中只编辑一个模型字段的简单形式

时间:2011-09-15 06:45:12

标签: forms spring-mvc

更改用户数据的最佳方法是什么? 我有很多属性,如'用户名','城市','手机',当我想编辑一个字段('密码')时,我必须这样做:

<form:form action="editUser.htm?id=${user.id}" commandname="user">
    <form:hidden path='username' />
    <form:hidden path='city' />
    <form:hidden path='phone' />
    <form:input path='password' />

....

在我的控制器中定义了操作:

@RequestMapping(value = "/editUser.htm", method=RequestMethod.POST)
public ModelAndView ordertypeedit(@ModelAttribute("user") User user, 
        BindingResult result, HttpServletRequest request)throws Exception{
        userTypeValidator.validate(orderType, result);
        if(result.hasErrors()){
        (...)
        return new ModelAndView(...);
        }
        orderTypeDAO.update(orderType);
        return new ModelAndView(...);

我不喜欢将所有内容设置为我的操作表单...如果我错过它,则显示错误'column'username'不能为null“。

2 个答案:

答案 0 :(得分:4)

这取决于您的属性是否在该表单上得到验证或强制要求:

如果没有,那么您无需使用表单提交:

<form:form action="editUser.htm?id=${user.id}" commandname="user">
    <form:input path='password' />

并且在您的控制器中,您将获得仅包含用户参数的用户对象。

替代方法是传递常规(不是Spring MVC)表单并使用id和password属性创建内部用户对象。

答案 1 :(得分:1)

你可以使用简单的(没有弹簧标签)表单和一个输入,并使用@RequestParam

在控制器中获取它