Struts2 在页面定义变量 s:set标签
2012-03-27 11:05
323 查看
网上很多关于S:set标签的用法,例如:
<s:set name="test" value="'测试'" />
<s:property value="#test" />
最近在项目开发中,需要一个把一个List中的id,循环输出到一个js里面。测试了半天,得到如下代码。
(假设test这个list中有个ID字段,值为1 2 3 4)
<script>
var aa="";
<s:set name="ttt" value="-1" />
<s:iterator id="epslist" value="test" status="index">
<s:set name="ttt" value="#ttt+','+#epslist.id" />
</s:iterator>
aa="<s:property value="#ttt" />";
</script>
循环之后aa值="-1,1,2,3,4"。(这里根据自己的需要把红色部分的value改为自己需要的,然后在用js操作该aa的值)
注意红色部分,如果删除掉红色部分代码,aa值为""(不是null).
如果把红色部分代码改为<s:set name="ttt" value="" /> 或者<s:set name="ttt" />
结果是:
第一种情况 aa="null,1,2,3,4";
第二种情况 aa=**.**.**.**@***,1,2,3,4;
遇到过set设置了字符串不能显示的情况例如
<s:set name="ttt" value="abc" />
<s:property value="#ttt"/>按道理说可以显示了啊。其实暗藏玄机,就是这时候他把abc当成变量来取值,而不是看成字符串。所以要想看成字符串必须加单引号。<s:set name="ttt" value="’abc‘" />
set标签是将某个值放到指定范围内, 比如说 student.teacher.parent.age 每次访问这个属性不仅性能低,而且代码可读性很差,为了解决这个问题,可以将这个值设置为一个新值,并且放入指定范围内
name 是必填属性,是重新生成的新变量的名字
scope 可选属性,指定新变量被放置的范围,可以接受application,session,request,page,action 这5个值 没有指定默认是Stack Context中
value 可选属性,指定变量的值 如果没有指定,使用ValueStack栈顶的值赋给新变量
id 可选属性,指定新元素的引用ID
下面是个例子:
<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
将p放入application范围内。
<s:set value="#p" name="test" scope="application"/>
<s:property value="#attr.test.name"/> <br>
<s:property value="#attr.test.age"/> <br>
将p放入session范围内。
<s:set value="#p" name="test" scope="session"/>
${sessionScope.test.name} <br>
赋的值如果是一个表达式,基本都会,我看了楼上的各种回答,清一色的都是赋的表达式,都没有赋常量的例子,
我现在也补充一个,如果value中要赋的是常量,如果直接
<s:set name="page2" value="listMaterialEnt" scope="session"> </s:set>
这样在页面中是访问不到listMaterialEnt这个字符串,怎么样才能赋这个字符串常量值呢?加个单引号就搞定,这个也是我研究了半天才研究出来,如下:
<s:set name="page2" value="'listMaterialEnt'" scope="session"> </s:set>
<s:set name="test" value="'测试'" />
<s:property value="#test" />
最近在项目开发中,需要一个把一个List中的id,循环输出到一个js里面。测试了半天,得到如下代码。
(假设test这个list中有个ID字段,值为1 2 3 4)
<script>
var aa="";
<s:set name="ttt" value="-1" />
<s:iterator id="epslist" value="test" status="index">
<s:set name="ttt" value="#ttt+','+#epslist.id" />
</s:iterator>
aa="<s:property value="#ttt" />";
</script>
循环之后aa值="-1,1,2,3,4"。(这里根据自己的需要把红色部分的value改为自己需要的,然后在用js操作该aa的值)
注意红色部分,如果删除掉红色部分代码,aa值为""(不是null).
如果把红色部分代码改为<s:set name="ttt" value="" /> 或者<s:set name="ttt" />
结果是:
第一种情况 aa="null,1,2,3,4";
第二种情况 aa=**.**.**.**@***,1,2,3,4;
遇到过set设置了字符串不能显示的情况例如
<s:set name="ttt" value="abc" />
<s:property value="#ttt"/>按道理说可以显示了啊。其实暗藏玄机,就是这时候他把abc当成变量来取值,而不是看成字符串。所以要想看成字符串必须加单引号。<s:set name="ttt" value="’abc‘" />
set标签是将某个值放到指定范围内, 比如说 student.teacher.parent.age 每次访问这个属性不仅性能低,而且代码可读性很差,为了解决这个问题,可以将这个值设置为一个新值,并且放入指定范围内
name 是必填属性,是重新生成的新变量的名字
scope 可选属性,指定新变量被放置的范围,可以接受application,session,request,page,action 这5个值 没有指定默认是Stack Context中
value 可选属性,指定变量的值 如果没有指定,使用ValueStack栈顶的值赋给新变量
id 可选属性,指定新元素的引用ID
下面是个例子:
<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
将p放入application范围内。
<s:set value="#p" name="test" scope="application"/>
<s:property value="#attr.test.name"/> <br>
<s:property value="#attr.test.age"/> <br>
将p放入session范围内。
<s:set value="#p" name="test" scope="session"/>
${sessionScope.test.name} <br>
赋的值如果是一个表达式,基本都会,我看了楼上的各种回答,清一色的都是赋的表达式,都没有赋常量的例子,
我现在也补充一个,如果value中要赋的是常量,如果直接
<s:set name="page2" value="listMaterialEnt" scope="session"> </s:set>
这样在页面中是访问不到listMaterialEnt这个字符串,怎么样才能赋这个字符串常量值呢?加个单引号就搞定,这个也是我研究了半天才研究出来,如下:
<s:set name="page2" value="'listMaterialEnt'" scope="session"> </s:set>
相关文章推荐
- Struts2 在页面定义变量 s:set标签
- jsp页面定义的struts2 set标签问题 怎么解决?
- JSTL 标签获得jsp页面上定义的变量
- 怎么将页面上的java变量放到struts2标签里?
- Struts2 标签定义变量及for循环
- Struts2 标签定义变量及for循环
- JSP页面如何访问标签中定义的变量-使用实现
- 使用struts2标签<s:action无法显示引用页面问题
- Struts2 标签在页面的几个应用
- Struts2:通过action标签向页面传值
- tp5 volist标签显示未定义变量
- 1. Struts2页面开发中常用标签使用说明
- jsp页面取struts2 action的变量供java、servlet使用
- webSphere6.1.0.15运行struts2 s:set 标签取值问题
- 页面使用struts2标签获取List中的对象属性值,Struts2常用标签总结
- Struts2中s:set标签和s:if标签小结
- 【转载】在Express的页面模板中的变量的定义与使用总结
- struts2 - View页面中获取Action的成员变量
- Struts2通过自己定义拦截器实现登录之后跳转到原页面
- Struts2页面开发中常用标签使用规范