私は試しましたが、ここで何が起こっているのか理解できません。
- @Controllerを使用して注釈が付けられた単純なコントローラーがあります
- @SessionAttributesのアノテーションもあります
- GETリクエストを処理し、オブジェクトをモデルに配置します。
- フォームからPOSTを取得すると、ユーザーが入力した内容のみが返されます。完全なオブジェクトを取り戻せません。
私はSessionAttributesを初めて使用しますが、これによりオブジェクト全体が保持され、@ ModelAttributeを使用してオブジェクトがメソッドで読み戻されると、オブジェクト(つまり、フォームが変更されたオブジェクト)がマージされると思いました。ただし、この動作は見られません。
どんな助けでも大歓迎です。
コードの関連部分は次のとおりです。
@Controller
@RequestMapping("/user")
@SessionAttributes("user")
public class UserController
{
// ...
@RequestMapping(value = "/{login}", method = RequestMethod.GET)
public String profile(Model model, @PathVariable("login") String login)
{
// ...
model.addAttribute("user", user);
// ...
}
@RequestMapping(value="/{login}", method = RequestMethod.POST)
public String saveProfile(@ModelAttribute("user") @Valid User user, BindingResult result, SessionStatus status)
{
if (result.hasErrors())
{
return "user/index";
}
// ...
status.setComplete();
return "redirect:/user/"+user.getLogin();
}
私が見逃したかもしれない何かを見ますか?私はこれを理解しようとしてほぼ1日を費やしましたが、理解できません。どんな助けでも大歓迎です。
更新:問題が何であるかを理解しました。回答は以下に掲載されています。