目录
struts 2的标签中,有个<s:include>
标签,这个标签能将其他页面给包含到本页面。使用这个语法,能将网页给模块化了。不用写一个长长的页面,将相同的部分给抽取出来,从而复用代码。
同时,我们也可以向要include进来的页面传入参数。在被include的页面中,我们可以读取。
向include传入参数
<s:include value="myJsp.jsp" />
<s:include value="myJsp.jsp"> <s:param name="param1" value="value2" /> <s:param name="param2" value="value2" /> </s:include>
<s:include value="myJsp.jsp"> <s:param name="param1">value1</s:param> <s:param name="param2">value2</s:param> </s:include>
取参数方法一:${param.ParamName}官方的唯一方法
在被include页中取出参数,在myJsp.jsp页面中,获得参数的方法就是${param.ParamName}。
<div>通过这样取出参数值${param.param1}</div>
对了,要获得参数必须使用param
这个对象。根据官方的struts include document说明,只能通过${param.param1}
这样取出,其他方法不能直接取出来,<s:property>
标签不能取出参数。
注意:不要在<s:property>
标签的属性里使用${}标记,${}能够在html代码中直接显示。如果需要,请查阅Expression Language (EL)
取参数方法二:利用request对象来传递
include传参数还是一样的方法。但是在取参数,使用里一些小技巧。
<% pageContext.setAttribute("myparam" , request.getParameter("param1")); %> <s:property value="#attr.myparam"/>
通过pageContext对象来设置参数,或者你也可以使用request对象来实现参数的设置。有点投机了,不过此方法只能取字符串?为什么我不能获得其他值呢?
取参数方法三:不用include传入参数,在外头定义约定变量
<s:set name="param1" value="#request.user" /> <s:include value="myJsp.jsp" />
此方法有点投机取巧了。没有经过include标签传入参数,但在外头定义一个变量,在myJsp.jsp页取得共同约定的变量也不错。这样,在myJsp.jsp页中可以使用struts标签,和正常的情况一样使用,用起来很方便。个人喜欢使用这个方法。
取参数方法四:自己设置valueStack
参考文章来源:http://blog.csdn.net/james_wu_shanghai/article/details/4034739
在myJsp.jsp页面中自己忘valueStack添加自己的值。
<%@page import="com.opensymphony.xwork2.ognl.OgnlValueStack"%> <% ((OgnlValueStack) request.getAttribute("struts.valueStack")).set( "operation", request.getParameter("operation")); %> <s:property value="operation"/>
此方法本人也用过,能正常工作,但是在其他页面出现问题了,详情请查看struts里不能获得request的参数。立刻将此方法撤下了。
声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客
2013 年 6 月 20 日 — 10:36
收藏