struts2关于request,session,application传值与显示的问题
有一个主框架. 名为main.jsp
- HTML code
</head> <frameset rows="127,*,11" frameborder="no" border="0" framespacing="0"> <frame src="top.jsp" name="topFrame" scrolling="no" noresize="noresize" id="topFrame" /> <frame src="center.jsp" name="mainFrame" id="mainFrame" /> <frame src="down.jsp" name="bottomFrame" scrolling="no" noresize="noresize" id="bottomFrame" /> </frameset> <noframes> <body> </body> </noframes></html>
其中center.jsp为主要内容,但是也为一个框架,分左右两个页面
- HTML code
<body> <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="8" bgcolor="#353c44"> </td> <td width="147" valign="top"> <iframe height="100%" width="100%" border="0" frameborder="0" src="left.jsp" name="leftFrame" id="leftFrame" title="leftFrame"></iframe> </td> <td width="10" bgcolor="#add2da"> </td> <td valign="top"> <iframe height="100%" width="100%" border="0" frameborder="0" src="right.jsp" name="rightFrame" id="rightFrame" title="rightFrame"></iframe> </td> <td width="8" bgcolor="#353c44"> </td> </tr> </table> </body>
left.jsp.主要是从request里获取到treeList进行循环
- HTML code
<body> <div style="height: 100%;"> <ul id="navigation"> <s:iterator value="#request.treeList" id="tree"> <s:iterator value="#request.tree" id="treeName" status="tn"> <li> <a class="head"><s:property value="key" /> </a> <ul> <s:iterator value="#treeName.value" id="treeNodeName" var="treeNodeName"> <li> <a href="information.html" target="rightFrame">${treeNodeName.functionName} </a> </li> </s:iterator> </ul> </li> </s:iterator> </s:iterator> </ul> </div> </body>
MUserInfoAction 实现遍历树形结构的action
- Java code
HttpServletRequest request = ServletActionContext.getRequest();List treeList = functionServices.getAdminFuncListByParentId(mUserInfo .getCompany().getAgency().getAgencyId());requestsetAttribute("treeList", treeList);
现在的情况就是这样的..如果我在MUserInfoAction这样写requestsetAttribute("treeList", treeList);
我直接跳转到left.jsp..内容可以正常显示,没有任何问题
但是如果我是跳转到main.jsp.. 由于是main.jsp -->center.jsp -->left.jsp.内容没有办法显示
我想应该是作用域的问题.然后改用application
MUserInfoAction 实现遍历树形结构的action
- Java code
ServletContext application = ServletActionContext.getServletContext();List treeList = functionServices.getAdminFuncListByParentId(mUserInfo .getCompany().getAgency().getAgencyId());application.setAttribute("treeList", treeList);
left.jsp
left.jsp.主要是从request里获取到treeList进行循环
- HTML code
<body> <div style="height: 100%;"> <ul id="navigation"> <s:iterator value="#application.treeList" id="tree"> <s:iterator value="#application.tree" id="treeName" status="tn"> <li> <a class="head"><s:property value="key" /> </a> <ul> <s:iterator value="#treeName.value" id="treeNodeName" var="treeNodeName"> <li> <a href="information.html" target="rightFrame">${treeNodeName.functionName} </a> </li> </s:iterator> </ul> </li> </s:iterator> </s:iterator> </ul> </div> </body>
还是取不到值.最后session也用了.还是不行.
[解决办法]
很简单一件事情:
在left.jsp中使用<s:action />标签即可。
<s:action name="执行MUserInfoAction对应的请求名" namespace="请求名所在的命名空间" executeResult="false"/>
位置放置在<s:iterator />标签上面即可。范围用request就行.
<s:iterator value="#request.treeList" id="tree">