2011-09-15 9 views
2

たとえば、Userのデータを変更する最も良い方法は何ですか?私のコントローラのアクションではSpring MVCでモデルの1つのフィールドのみを編集する簡単なフォーム

<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' /> 

.... 

: 私はちょうど1フィールド(「パスワード」)を編集したいとき、私はこれをしなければならない「ユーザ名」、「都市」、「電話」などの特性の多くを得ました定義されています

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

私はすべてのアクションフォームに設定することが好きではない...私はそれを逃した場合は、エラー「列 『ユーザ名』が」NULLにすることはできません示し

答えて

4

をそれは依存しています。あなたのプロパティがそのフォームで検証されているか強制的である場合:

ない場合は、フォームを提出する必要はありません。

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

とあなたのコントローラであなただけのユーザパラメータを使用してユーザオブジェクトを取得します。

代わりに、通常の(Spring MVCではない)フォームを渡して、idプロパティとpasswordプロパティのみを持つ内部ユーザーオブジェクトを作成します。

1

1つの入力でシンプル(スプリングタグなし)のフォームを使用し、@RequestParamを使用してコントローラで取得することができます

関連する問題