1. 程式人生 > >Struts的取值與標籤

Struts的取值與標籤


首先,我們都知道,在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/7426085
http://blog.csdn.net/dlf123321/article/details/28645369