文章标题说不能从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>
- 说明:
newPost.jsp:4
因为要在admin-sidemenu.jsp页面中高亮当前的菜单,所以需要向该页面传入参数,以确定需要高亮显示的菜单。newPost.jsp:9
因为要在ajax/post.jsp页面中默认选中目录,所以使用了#request[category]来获得category的值。newPost.jsp:2
为了验证#request[category]是否工作而设置的。结果显示2ajax.post.jsp:1
这里能工作,显示2ajax.post.jsp:2
这里能工作,显示2ajax.post.jsp: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方法传参数,取参数值。
声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客
发表评论