Struts的取值與標籤
阿新 • • 發佈:2019-02-19
首先,我們都知道,在struts2中有一個valuestack。裡面存放的就是action裡的屬性。同時,還有一個stackcontext,裡面放的是map形式的request/session/attr/application。
在取值的時候
valuestack中的值
<s:property value="user.name">
或在任意的<s:/>標籤內使用%{} (記得這個 在s標籤內部 就得使用%{} )
stackcontext中的值
<s:property value="#attr.user.name"> (此時在request/session/attr/application中應該有一個user)
使用attr是在你自己也不知道user這個資料是放在request/session還是別的什麼裡。
再說說struts裡的if
官方給出的指導裡面 例子很簡單
<s:if test="%{false}"> <div>Will Not Be Executed</div> </s:if> <s:elseif test="%{true}"> <div>Will Be Executed</div> </s:elseif> <s:else> <div>Will Not Be Executed</div> </s:else>
螢幕上會打印出Will Be Executed
這說明什麼,這說明%{}取得值,不一定在valuestack中。
既然說到了strtus的if,我們不妨再看看jstl裡面的if
再說jstl的if之前我們先看看EL運算子
jstl的if如下:
下來我們也看看我今天在用if遇到的問題
list是valuestack裡面的物件
我想完成的功能是如果 list.getIndex(2).getContent()的內容是入網優先
就讓下拉框預設選中入網優先
上面的程式碼肯定不能執行嘍。為什麼?<s:if test="%{list.{content}[2]==入網優先}"> <option value="入網優先" selected="selected">入網優先</option> </s:if> <s:else> <option value="入網優先">入網優先</option> </s:else>
大家請參考 struts2 if標籤示例
換句話說 我的程式碼應該改成下面的樣子
<s:if test="%{list.{content}[2]==\"上網優先\"}"> <option value="上網優先" selected="selected">上網優先</option> </s:if> <s:else> <option value="上網優先">上網優先</option> </s:else>
##################################################################################################
這兩天又看了一下這篇文章,覺得用list來放置資料不合適,
<s:if test="%{list.{content}[2]==\"上網優先\"}">
如果list的第二個元素放的是別的資訊呢?
所以用map比較合適
<pre name="code" class="html"> <s:if test="%{resultMap.Fre_policy.content==\"上網優先\"}">
<option value="上網優先" selected="selected">上網優先</option>
</s:if>
<s:else>
<option value="上網優先">上網優先</option>
</s:else>
resultMap是hashmap型的,裡面的key包括Fre_policy,而Fre_policy裡面有個欄位是content參考資料
精通javaweb整合開發
http://blog.csdn.net/liehuoliaoyuan/article/details/7426085http://blog.csdn.net/dlf123321/article/details/28645369