首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts2关于request,session,application传值与显示的有关问题

2012-08-08 
struts2关于request,session,application传值与显示的问题有一个主框架. 名为main.jspHTML code/headfr

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">                    &nbsp;                </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">                    &nbsp;                </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">                    &nbsp;                </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">

热点排行