Struts2 在页面定义变量 s:set标签
http://blog.csdn.net/shiqidide/article/details/7398078
網(wǎng)上很多關(guān)于S:set標(biāo)簽的用法,例如:
<s:set name="test" value="'測(cè)試'" />
<s:property value="#test" />
?
最近在項(xiàng)目開發(fā)中,需要一個(gè)把一個(gè)List中的id,循環(huán)輸出到一個(gè)js里面。測(cè)試了半天,得到如下代碼。
(假設(shè)test這個(gè)list中有個(gè)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>
?
循環(huán)之后aa值="-1,1,2,3,4"。(這里根據(jù)自己的需要把紅色部分的value改為自己需要的,然后在用js操作該aa的值)
?
注意紅色部分,如果刪除掉紅色部分代碼,aa值為""(不是null).
如果把紅色部分代碼改為<s:set name="ttt" value="" /> 或者<s:set name="ttt" />
?
結(jié)果是:
第一種情況 aa="null,1,2,3,4";
第二種情況 aa=**.**.**.**@***,1,2,3,4;
遇到過set設(shè)置了字符串不能顯示的情況例如
<s:set name="ttt" value="abc" />
<s:property value="#ttt"/>按道理說(shuō)可以顯示了啊。其實(shí)暗藏玄機(jī),就是這時(shí)候他把a(bǔ)bc當(dāng)成變量來(lái)取值,而不是看成字符串。所以要想看成字符串必須加單引號(hào)。<s:set name="ttt" value="’abc‘" />
?
?
set標(biāo)簽是將某個(gè)值放到指定范圍內(nèi), 比如說(shuō) student.teacher.parent.age 每次訪問這個(gè)屬性不僅性能低,而且代碼可讀性很差,為了解決這個(gè)問題,可以將這個(gè)值設(shè)置為一個(gè)新值,并且放入指定范圍內(nèi)
name 是必填屬性,是重新生成的新變量的名字
scope 可選屬性,指定新變量被放置的范圍,可以接受application,session,request,page,action 這5個(gè)值 沒有指定默認(rèn)是Stack Context中
value 可選屬性,指定變量的值 如果沒有指定,使用ValueStack棧頂?shù)闹蒂x給新變量
id 可選屬性,指定新元素的引用ID
下面是個(gè)例子:
<!-- 使用bean標(biāo)簽定義一個(gè)javaBean實(shí)例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
將p放入默認(rèn)范圍內(nèi)
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
將p放入application范圍內(nèi)。
<s:set value="#p" name="test" scope="application"/>
<s:property value="#attr.test.name"/> <br>
<s:property value="#attr.test.age"/> <br>
將p放入session范圍內(nèi)。
<s:set value="#p" name="test" scope="session"/>
${sessionScope.test.name} <br>
?
賦的值如果是一個(gè)表達(dá)式,基本都會(huì),我看了樓上的各種回答,清一色的都是賦的表達(dá)式,都沒有賦常量的例子,
我現(xiàn)在也補(bǔ)充一個(gè),如果value中要賦的是常量,如果直接
<s:set name="page2" value="listMaterialEnt"? scope="session"> </s:set>
這樣在頁(yè)面中是訪問不到listMaterialEnt這個(gè)字符串,怎么樣才能賦這個(gè)字符串常量值呢?加個(gè)單引號(hào)就搞定,這個(gè)也是我研究了半天才研究出來(lái),如下:
<s:set name="page2" value="'listMaterialEnt'"? scope="session"> </s:set>
總結(jié)
以上是生活随笔為你收集整理的Struts2 在页面定义变量 s:set标签的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入探讨 java.lang.ref 包
- 下一篇: valuestack,stackCont