s:set标签的用法
1、??s:set標(biāo)簽
格式:<s:set?name=""?value="" scope=””/>
說明:把jsp頁面中的一個值,以name存儲起來。Scope存儲的范圍是在application、session、request、page……。默認(rèn)是存儲在該action中。
用法①:<s:set?name="miloList"?value="{‘java’,’php’,’C#’}"/>
這個值是一個list容器,迭代使用s:iterator標(biāo)簽,Notice:list、set容器不加”#”,map要加”#”;
用法②:<s:set?name="miloNum"?value="24"/>
Notice:這個是整形,如果value的值是int或long類型,那么就要在輸出的時候加#,把它當(dāng)作字符串輸出,默認(rèn)是以字符串輸出.
輸出:<s:property?value="#miloNum"/>
那么如果value是字符串呢?
<s:set?name="miloStr"?value="’24’"/>
Notice:這個是字符串,value中的字符串要加上單引號(‘),這樣才說明是字符串。
輸出:<s:property?value="miloStr"/>
用法③:用scope屬性說明存儲范圍
request:<s:set?name="miloVal"?value="'24'" scope="request"/>
輸出:<s:property?value="#request.miloVal"/>
session:<s:set?name="miloVal"?value="'24'" scope="session"/>
??????輸出:<s:property?value="#session.miloVal"/>
page:<s:set?name="miloVal"?value="'24'" scope="page"/>
輸出:<s:property?value="#attr.minVal"/>
Notice:attr.***默認(rèn)是從?page, request, session, then application scopes
?
2、??s:if標(biāo)簽
對于s:if標(biāo)簽的用法,我這里不做具體的說明,因為在網(wǎng)上都能查找到,而且在前面的Struts2 -- s:if標(biāo)簽的使用,中已經(jīng)說明過了,這里我只說明一下我在項目實踐中遇到的問題,如下:
①?????假設(shè)在request中有個checkStatus屬性(這里表示為審批狀態(tài)),有這樣一個需求,如果checkStatus的值為’00’表示未審批,’01’表示已審批,那么根據(jù)checkStatus的值,在頁面上顯示未審批或已審批。
我的頁面代碼如下:
<s:if?test="#request.checkStatus == ‘00’"/>未審批</s:if>
<s:else>已審批</s:else>
按理說,這樣應(yīng)該能達(dá)到要求,但是結(jié)果往往不能如你所愿,我用了很多的表達(dá)式方法,都沒能成功,最后我在Action處理checkStatus,將其轉(zhuǎn)換為中文,然后直接在頁面上輸出,從中得到啟示,原因是因為我的checkStatus的值是從數(shù)據(jù)庫中取出來的,而在數(shù)據(jù)庫中checkStatus的類型為Char(6),在數(shù)據(jù)庫里面有這樣的規(guī)定如果是char型,那么你定義的長度是多長就是多長,所以我在頁面上用#request.checkStatus的長度也應(yīng)該是6,而’00’的長度顯然為2,這兩個值顯然不相等,因此此問題的解決方法為:
法①在Action處理checkStatus用String的trim()方法;
法②修改數(shù)據(jù)庫字段為varChar類型;
但個人認(rèn)為,對于某個代碼表示某些值如:’00’表示:否,’01’表示:是,應(yīng)該建立一個分類代碼表,在數(shù)據(jù)庫中統(tǒng)一管理。
②?????s:set和s:if的應(yīng)用實例
<s:iterator?value="#request['orderMap']"?status="st">
<s:if?test="checkSataus == '00'">
<s:set?name="disabled"?value="''"?/>
<s:if?test="#st.index == 0">
<s:set?name="checked"?value="'checked'"?/>
</s:if>
<s:else>
<s:set?name="checked"?value="''"?/>
</s:else>
</s:if>
<s:else>
<s:set?name="disabled"?value="'disabled'"?/>
<s:set?name="checked"?value="''"?/>
</s:else>
?
<input?type="radio"?name="orderid"?value='<s:property?value="order.orderid"/>'
<s:property?value="disabled"/>?<s:property?value="checked"/>?/>
</s: iterator>
總結(jié)
以上是生活随笔為你收集整理的s:set标签的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【pandas】reset_index函
- 下一篇: html 支持ssi,shtml网页SS