解决方案 »

  1.   

    1,页面除了用java代码<%=%>去取外,还有没有别的方式,struts2如何去根据这个常量去获取这个put进去的值呢?
          可以直接通过<%=%>方式去输出,也可以通过el表达式的方式,也可以使用struts2的自带标签库去输出2,我现在是用
    <% User user = (User) request.getSession().getAttribute(接口.USER_INFO); %>
    这样去取,然后用el表达式可以取到这个author,如:${user} ,那么问题是,这个el表达式是取得struts2值栈里我在action中put进去的值呢,还是取得我上面用java代码获取的值?
           这个问题,你可以自己试一下。el表达式遇到和jsp动作标签同名的变量时,值是否覆盖,这个没操作过。
           
    3,我通过action1,处理用户并put进actionContext,然的转发到action2,再跳准到jsp页面。
    其中,转发不使用chain的话,action2中会丢失action1的处理结果,也就是丢失这个用户为信息。但跳转到jsp页面后,通过我上面第2点中提到的java代码,确是可以System.out.println(user),打印出这个user.getName();这又是怎么回事呢?
          chain 在struts2 中主要是在action之间传递属性属性的。
          页面的话,跳转是通过request去传递的参数,在页面间通过普通跳转,是同一个request,所以参数都在。
      如果使用sendRedirect 重定向后,System.out.println(user), 这个就打印不到了
      

  2.   


    本来是这样:
    action中:actionContext.getSession().put(“user_info”, user);
    jsp页面:#user_info(ognl方式)
    现在换成:
    action中:actionContext.getSession().put(接口.USER_INFO, user);也就是把这个user_info换成定义好的常量。
    jsp页面:ognl方式还可以取到值吗?这种情形一般在SSH项目中是如何处理的?