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
官方给出的指导里面 样例非常easy

<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://hamlzf.iteye.com/blog/1669490

http://blog.csdn.net/liehuoliaoyuan/article/details/7426085
http://blog.csdn.net/dlf123321/article/details/28645369

http://hw1287789687.iteye.com/blog/1949722


posted on 2017-05-25 17:11  ljbguanli  阅读(125)  评论(0编辑  收藏  举报