我的班级中有2个控制器:-1st控制器返回到jsp页面,在jsp我正在使用表单,在提交该表单时它调用第二个控制器。我想将一个对象从第一个控制器传递到第二个控制器,并且不想将该对象发送到中间jsp页面,所以有任何方法可以做到这一点。我也不想使用会话属性
这是我的第一个控制器
@RequestMapping(value = "/login", method = RequestMethod.GET)
public static String login(final Model model) {
final Studentdata studentdata = new Studentdata();
studentdata.setName("username");
return "Login" ;
}
这是我的Login.Jsp
<form action="/loungeHotel/checkLogin" method="post">
<input type="submit" value="submit">
</form>
这是第二个控制器
@RequestMapping(value = "/checkLogin", method = RequestMethod.POST)
public static String checkLogin(final Model model) {
System.out.println("here i want to access studentdata");
return "MyAccount";
}
答案 0 :(得分:1)
我认为HttpSession是正确的选择。
如果您不想使用HttpSession或任何服务器存储,例如数据库,......您可以使用这种方式 - 使用隐藏输入进行客户端存储
修改登录以在请求属性中存储studentdata
<ul>
<li><a href='#'>Menu Item</a></li>
</ul>
修改登录jsp
@RequestMapping(value = "/login", method = RequestMethod.GET)
public static String login(HttpServletRequest request, final Model model) {
final Studentdata studentdata = new Studentdata();
studentdata.setName("username");
request.setAttribute("studentData", studentdata);
return "Login" ;
}
修改checkLogin
<form action="/loungeHotel/checkLogin" method="post">
<!-- Write all studentdata Properties as Hidden inputs -->
<input type="hidden" name="property1" value="${studentData.property1}"
<input type="hidden" name="property2" value="${studentData.property2}"
<input type="hidden" name="property3" value="${studentData.property3}"
<input type="submit" value="submit">
</form>