Struts2 在页面定义变量 s:set标签

转载 2012年03月27日 11:05:12

网上很多关于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中的get、set方法重要性

在Struts2中,客户端和服务器之间的数据传输全部要用到get、set方法          当在业务逻辑中需要用到页面传过来的值的时候,只要保证Action中属性的set方法和页面中的name...

struts2前台传递List、Set、Map集合数据到后台

struts2前台传递List、Set、Map集合数据到后台          对应数据在前台与后天中的交互,struts2框架替我们做了很大部分的数据封装工作,这里就关于一些常见类型数据传递的格式和...

s:set标签的用法

1、  s:set标签 格式:s:set name="" value="" scope=””/> 说明:把jsp页面中的一个值,以name存储起来。Scope存储的范围是在applic...

Struts2标签的<s:set标签的用法

set标签 set标签 用于将某个值放入指定范围内。例如application、session范围等。 当某个值所在的对象图深度非常深时,例如如下:person.worker.wife.p...

struts2 s标签 s:set 和 s:if

set标签是将某个值放到指定范围内, 比如说 student.teacher.parent.age 每次访问这个属性不仅性能低,而且代码可读性很差,为了解决这个问题,可以将这个值设置为一个新值,并且放...

Struts2标签之set

Struts2标签可以分为UI标签,非UI标签和ajax标签。1.UI标签:主要用于显示页面,生成HTML。2.非UI标签:主要是访问数据,其中它可以分为数据标签(数据储存和处理)和控制标签(条件和循...

struts2的bean标签和set标签

标签:用于在jsp页面创建javabean实例,可以使用传入参数。 name:指定实例化javabean的实现类 id:实例化对象的名字 标签:set标签定义一个新的变量,并把一个已有的变量赋值...

struts2 s:if标签以及 #,%{},%{#}的使用方法等在资料整理

判断字符串的问题:   1、判断单个字符:   这样是从session中取出username的值,并且判断其是否为c,但是这样判断是不正确的,这样判断的话,根本判断不出来,要改成下面这样:...

Struts2.3升级struts2.5.10.1

1.首先替换的包如下: 删除xwork包 2. loggor类改变从log4j-1.2.25.jar到log4j-api-2.7.jar          修改java文件的错误: ...

struts-2.3.20升级至struts-2.5.10流程及主要事项

struts2官网地址:http://struts.apache.org/ 1.下载strtuts2.5包 2.替换工程中的附件目录文件 freemarker-2.3.23.jar ognl-3.1....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)