ServletActionContext.getRequest().getSession().setAttribute("manager", tm);
tm是对象里面有fmstatus这个属性
读取用 <s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
都读不到
但用 ${sessionScope.manager.fmstatus}可以读到

解决方案 »

  1.   

    因为你用的是ServletActionContext.getRequest().getSession().setAttribute("manager", tm); 所以${sessionScope.manager.fmstatus}可以读到
    你用的Session是Servlet的这个与Struts2的Session好像没有直接关系,因为他们的管理不一样。
      

  2.   

    能用什么方法取得<s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
      

  3.   

    那在action怎样定义session,页面可以用<s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
    取得session
      

  4.   

    "%{#session.manager.fmstatus}" 和"#session.manager.fmstatus"
    这2种写法就不对,
    ${sessionScope.manager.fmstatus} 这才对
      

  5.   

    ${session.sessionName}这样也可以拿到session的object。
      

  6.   

    struts2为什么要用这么复杂的方法设置session?
    不是有个接口吗?然后往一个Map的实现里面放。(名字忘了)是不是lz的session值的放置方式和struts2本身的机制有什么冲突,
    才导致有地方取不到(struts2的标签)而别的地方(jsp表达式)又能取到?good luck
      

  7.   

    %{session.manager.fmstatus}
    不要#号可以吗?
      

  8.   

    ActionContext.getContext().getSession().put("manager", tm);${sessionScope.manager.fmstatus}
      

  9.   

    structs2的sesssion跟Servlet原生的session不是一回事,前者做了封装你如果只是需要往session里面放东西然后在页面用标签打印,在Action里面ServletActionContext.getRequest().getSession().setAttribute("manager", tm); 
    然后页面直接<input type=text value="${manager.fmstatus}"/> 即可,JSTL的标准标签会自动判断是在request里面还是session里面的值
      

  10.   

    ActionContext.getContext().getSession().put("manager", tm);
    这个session是struts2封装过的,页面用
    <s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
    应该是可以取到的,一直这么用的
      

  11.   

    +1 这个是使用struts2的方式获得session对象。
      

  12.   

    貌似跑题了  呵呵
     楼主去看看ognl 和valueStack吧 这个对你有帮助
      在页面使用<s:debug></s:debug>
      可以清楚的看到值所在的范围  
      

  13.   

    struts2 的session是继承于AbstractMap
    它的存储操作的时候会 将值存入 httpsession  即 ServletActionContext.getRequest().getSession()
    而httpsession的进行存储的时候 并没有将值存入 struts2自己封装的session中 所以说取不到值
      

  14.   

    这样<s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
    还是取不到值,
    异常:
    2011-5-21 8:54:06 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet jsp threw exception
    The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]
    at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)
    at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:48)
    at org.apache.jsp.left_jsp._jspx_meth_s_005fproperty_005f0(left_jsp.java:274)
    at org.apache.jsp.left_jsp._jspService(left_jsp.java:198)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
      

  15.   

    s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
    这样子还真没有用过。都是${sessionScope.manager.fmstatus}这样去值得。。
      

  16.   

    我建议lz先看下<s:property/>这个标签的value属性接收的是什么类型的参数。不同版本的是不一样的有的是string有的是ognl表达式。如果是string就用%{#session.manager.fmstatus},如果是ognl表达式就用#session.manager.fmstatus