から始めてSpring Portlet MVC
いますが、この質問は にも当てはまると思いますSpring MVC
。この例をお見せしましょう
@Controller
@RequestMapping(value="VIEW")//this maps to Portlet Mode VIEW
public class LoginController {
@RenderMapping("action=showRegisterPage")
//this annotation is almost the same like @RequestMapping
public String showRegisterPage() {
return "registration";
}
@ModelAttribute("loginForm")
public LoginForm getLoginForm() {
return new LoginForm();
}
}
登録ページのコントローラー
@Controller
@RequestMapping(value="VIEW")
public class RegistrationController {
@ModelAttribute("user")
public User getUser() {
return new User();
}
}
問題は、ページから showRegisterPage メソッド (アクション) を呼び出すと、registration.jsp にリダイレクトされますが、この例外が発生することです。
Caused by: java.lang.IllegalStateException: Neither BindingResult nor
plain target object for bean name 'user' available as request attribute
これは、ModelAttribute
ユーザーを LoginController に配置することで修正できますが、コードの重複は実際には正しい方法ではないため、これを正しく解決するにはどうすればよいですか?また、showRegisterPage メソッドを RegistrationController に移動しようとしましたが、リンクが機能しません。誰かが、ページをコントローラーにバインドする方法を正確に説明できるでしょうか?
PS index.jsp と registration.jsp の両方に<form:form>
タグが含まれており、両方のコントローラーから定型コードも省略しました。