2つの機能を備えたホームページを作成しようとしています。
- ログイン
- サインアップ
各リクエストを別のコントローラーにマッピングし、結果をに戻そうとしていhome.jsp
ます。ModelAttribute
しかし、コントローラー間で特定の特定のものだけを渡すのに問題があります。具体的には、あるコントローラーで行った変更をModelMap
他BindingResult
のコントローラーに反映させることができません。
私がやっていることには基本的に何か問題があると確信しています。助けてください。
私のには2つの形式がありますhome.jsp
。ログイン用に1つ:
<form:form name="loginForm" modelAttribute="loginUser" action="login" method="post">
Email: <form:input name="loginEmail" id="loginEmail" value="" path="email"/>
<form:errors path="email" cssClass="error" />
<br/>
password: <form:password name="loginPassword" Id="loginPassword" value="" path="password" />
<form:errors path="password" />
<br/>
<input type="submit" id="id_login" value="Login">
</form:form>
もう1つはサインアップ用です。
<form:form name="SignUpForm" modelAttribute="signUpUser" action="signup" method="post">
Full Name: <form:input name="name" id="name" value="" path="name"/>
<form:errors path="name" cssClass="error" />
<br/>
Email: <form:input name="signupEmail" id="signupEmail" value="" path="email"/>
<form:errors path="email" cssClass="error" />
<br/>
password: <form:password name="signUpPassword" Id="signUpPassword" value="" path="password" />
<form:errors path="password" />
<input type="submit" id="id_signUp" value="Sign Up">
</form:form>
私は3つのコントローラーを持っていますHomeController.java
::
@RequestMapping("/home")
public String showHome(ModelMap model,
@ModelAttribute("loginUser") User loginUser,
BindingResult loginResult,
@ModelAttribute("signUpUser") User signUpUser,
BindingResult signUpResult) {
return "home";
}
AuthenticationController.java
:
@RequestMapping("/login")
public String login(@ModelAttribute("loginUser") User user,
BindingResult result, ModelMap model, HttpServletRequest request,
HttpServletResponse response) {
loginFormValidator.validate(user, result);
if(Errors in `result`)
return "forward:/home";
// Authentication Logic
request.getSession().setAttribute("s_user_obj", some_variable);
return "forward:/home";
}
およびProfileController.java
:
@RequestMapping("/signup")
public String signUpUser(@ModelAttribute("signUpUser") User user,
BindingResult result, ModelMap model) {
// Do stuff related to Sign Up
// Forward to home.jsp
}
リクエストがに転送されると、との両方で/home
同じ値を取得しています。さらに悪いことに、エラーはありません。つまり、変数は以前のコントローラーの変数を反映していません。loginUser
signUpUser
result
これを行うためのより良い方法があると確信しています。これは初心者の試みです。ご意見をお聞かせください。