ServletActionContext.getRequest().getSession().setAttribute("manager", tm);
tm是对象里面有fmstatus这个属性
读取用 <s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
都读不到
但用 ${sessionScope.manager.fmstatus}可以读到
tm是对象里面有fmstatus这个属性
读取用 <s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
都读不到
但用 ${sessionScope.manager.fmstatus}可以读到
你用的Session是Servlet的这个与Struts2的Session好像没有直接关系,因为他们的管理不一样。
取得session
这2种写法就不对,
${sessionScope.manager.fmstatus} 这才对
不是有个接口吗?然后往一个Map的实现里面放。(名字忘了)是不是lz的session值的放置方式和struts2本身的机制有什么冲突,
才导致有地方取不到(struts2的标签)而别的地方(jsp表达式)又能取到?good luck
不要#号可以吗?
然后页面直接<input type=text value="${manager.fmstatus}"/> 即可,JSTL的标准标签会自动判断是在request里面还是session里面的值
这个session是struts2封装过的,页面用
<s:property value="%{#session.manager.fmstatus}"/> 或<s:property value="#session.manager.fmstatus"/>
应该是可以取到的,一直这么用的
楼主去看看ognl 和valueStack吧 这个对你有帮助
在页面使用<s:debug></s:debug>
可以清楚的看到值所在的范围
它的存储操作的时候会 将值存入 httpsession 即 ServletActionContext.getRequest().getSession()
而httpsession的进行存储的时候 并没有将值存入 struts2自己封装的session中 所以说取不到值
还是取不到值,
异常:
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)
这样子还真没有用过。都是${sessionScope.manager.fmstatus}这样去值得。。