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/dlf123321/article/details/28645369