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运算符

Struts的取值与标签_第1张图片

jstl的if如下:

Struts的取值与标签_第2张图片


下来我们也看看我今天在用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


你可能感兴趣的:(struts,数据,标签,jstl,ValueStack)