プロジェクトのビルドにSpring3とHibernate4を使用しています。
私の質問は、たとえば、Userオブジェクトには、id、name、password、school、addressの5つのフィールドがあるということです。私はユーザーに学校や住所を更新/編集する権利のみを与えます。ユーザーが最初にGETを介して編集ページにアクセスするときに、フィールドにユーザーの既存の情報を入力したいと思います。
[送信]ボタンをクリックしたら、データベース内の対応する更新されたフィールドを休止状態で変更したいと思います。
Controller.java
@RequestMapping(value="/edit/{userId}", method="RequestMethod.GET")
public String toEdit(Model model,@PathVariable int userId){
User user = userService.get(userId);
model.addAttribute("command",user);
return "/edit";
}
@RequestMapping(value="/save", method="RequestMethod.POST")
public String toSave(Model model){
//how to implement this?
}
edit.jsp
<form:form action="/save" method="POST">
<form:input path="school"/>
<form:input path="address"/>
<input type="submit"/>
</form:form>
私の考えでは、更新されていないフィールドを非表示フィールドとしてedit.jspページに配置して、Userオブジェクトが再バインドされたとき(フォームが送信されたとき)でも、ユーザーのID、名前、およびパスワード情報を取得できるようにすることができます。 。
私のアプローチの落とし穴は明らかです。まず、隠しフィールドとしてのパスワードは決して行く方法ではありません。次に、edit.jspページに不要な情報を追加します。
私の2番目の考えは、edit.jspの非表示フィールドとしてユーザーIDのみを配置でき、フォームが送信されたときにUser user = userService.get(command.id)
、対応するユーザーオブジェクトを取得し、フィールド(学校や住所など)を新しく入力したフィールドに設定できることです。のようなものによるものuser.setSchool(command.getSchool())
。これらすべての後、ユーザーオブジェクトを更新できます。更新するフィールドがたくさんあると、コードもたくさんあるので、このアプローチはちょっと面倒です。
これを行うためのより良い方法はありますか?(必ず1つあるはずです)私はSpringとHibernateに非常に慣れていないので、非常に明白な何かが欠けている場合は、私に知らせてください。
ありがとう。