我正在尝试创建一个具有 2 个功能的主页:
- 登录
- 报名
我将每个请求映射到不同的控制器并尝试将结果返回到我的home.jsp
. 但是我ModelAttribute
在控制器之间只能传递某些特定的东西时遇到了麻烦。更具体地说,我无法将我对一个控制器所做的更改ModelMap
反映BindingResult
在其他控制器中。
我确定我所做的事情基本上有问题。请帮忙。
我的home.jsp
. 一个用于登录:
<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>
另一个用于注册:
<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
变量没有反映以前控制器中的错误。
我确信有更好的方法可以做到这一点,这是新手的尝试。请指教。