需要将对象从一个控制器传递到另一个控制器

时间:2015-10-29 19:09:56

标签: spring-mvc

我的班级中有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";
}

1 个答案:

答案 0 :(得分:1)

我认为HttpSession是正确的选择。

如果您不想使用HttpSession或任何服务器存储,例如数据库,......您可以使用这种方式 - 使用隐藏输入进行客户端存储

  1. 修改登录以在请求属性中存储studentdata

    <ul>
      <li><a href='#'>Menu Item</a></li>
    </ul>
  2. 修改登录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" ;
    }
    
  3. 修改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>