文章标题说不能从parameter中获得参数有点言过其实了,只是在不能使用某种方式来获得参数值。

最近在写一个系统,使用了struts2+spring+hibernate的架构。为了将jsp的页面进行模块化,将相同的部分抽取出来,形成一个单独的文件。然后使用strtus的<s:include>标签导入相同的文章。

示例demo,一个newPost.jsp,一个ajax/post.jsp,我们要在某个目录下添加文章,假设访问url:/newPost.jsp?category=2

<div id="contentDiv">
    <s:property value="#request[category]"/><!-- 显示2 -->
    <s:include value="admin-sidemenu.jsp">
        <s:param name="activeItem"  value="%{'add-post'}"></s:param>
    </s:include>

    <!-- main -->
    <div id="mainDiv">
        <s:include value="ajax/post.jsp"></s:include>
    </div>
    <!-- main end -->

    <s:property value="#request[category]"/><!-- 不工作了 -->
</div>
<%@page import="com.opensymphony.xwork2.ognl.OgnlValueStack"%>
<%    ((OgnlValueStack) request.getAttribute("struts.valueStack")).set(
            "activeItem", request.getParameter("activeItem"));
%>
<s:property value="activeItem"/><!-- 自己弄得valueStack这里能工作 -->
<s:property value="#request[category]"/><!-- 显示2 -->
<s:property value="#request.category"/><!-- 显示2 -->
<s:action name="category!categorys"></s:action>
<s:select name="categoryID" list="#request.categorys"
    listKey="categoryID" listValue="categoryName" headerKey="0"
    headerValue="未分类" id="articleCategory" theme="simple"
    value="#request[category]"><!-- 不工作了 -->
</s:select>
    说明:
  1. newPost.jsp:4因为要在admin-sidemenu.jsp页面中高亮当前的菜单,所以需要向该页面传入参数,以确定需要高亮显示的菜单。
  2. newPost.jsp:9因为要在ajax/post.jsp页面中默认选中目录,所以使用了#request[category]来获得category的值。
  3. newPost.jsp:2为了验证#request[category]是否工作而设置的。结果显示2
  4. ajax.post.jsp:1这里能工作,显示2
  5. ajax.post.jsp:2这里能工作,显示2
  6. ajax.post.jsp:7这里不工作,不默认自己选中
  7. newPost.jsp:13为了验证#request[category]在这里是否工作。结果不显示

虽然在<s:include>使用<s:param>标签想admin-sidemenu.jsp页面传入参数,然后再admin-sidemenu.jsp取出参数苦恼了许多问题。经过多种尝试,找到了自己喜欢的解决方案,获取include的方法请查看获取struts2 include标签param参数

但是在newPost.jsp后来居然获取不到#request[category]的值了!此前能取值,而且在ajax/post.jsp中的select标签也不能正常工作了。正是奇怪。

应该是把admin-menu.jsp中弄了个自己的valueStack,搞得有点乱了。所以还是把这个去了吧,改用我自己喜欢的include方法传参数,取参数值。

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: struts里不能获得request的参数 – https://www.chenyudong.com/archives/does-not-access-request-parameters-in-strust-include.html