Простая форма для редактирования только одного поля модели в Spring MVC - PullRequest
2 голосов
/ 15 сентября 2011

Как лучше всего изменить данные, например, пользователя?У меня есть множество свойств, таких как «имя пользователя», «город», «телефон», и когда я хочу отредактировать только одно поле («пароль»), я должен сделать это:

<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(...);

Я не хочу указывать все формы для своей формы действия ... Если я пропущу ее, она показывает ошибку «столбец« имя пользователя »не может быть пустым».

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Зависит от того, являются ли ваши свойства подтвержденными или обязательными для заполнения в этой форме:

Если нет, то вам не нужно отправлять их вместе с формой:

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

и в вашем контроллере вы получите объект пользователя только с пользовательским параметром.

Альтернативный способ - передать обычную (не Spring MVC) форму и создать внутри объекта пользователя только свойства id и пароля.

1 голос
/ 17 сентября 2011

Вы можете использовать простую (без пружинных тегов) форму с одним входом и получить ее в контроллере, используя @ RequestParam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...