`
cuker919
  • 浏览: 88652 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2 s标签 s:set 和 s:if

 
阅读更多

set标签是将某个值放到指定范围内, 比如说 student.teacher.parent.age 每次访问这个属性不仅性能低,而且代码可读性很差,为了解决这个问题,可以将这个值设置为一个新值,并且放入指定范围内
name 是必填属性,是重新生成的新变量的名字
scope 可选属性,指定新变量被放置的范围,可以接受application,session,request,page,action 这5个值 没有指定默认是Stack Context中
value 可选属性,指定变量的值 如果没有指定,使用ValueStack栈顶的值赋给新变量
id 可选属性,指定新元素的引用ID

下面是个例子:

<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
将p放入application范围内。
<s:set value="#p" name="test" scope="application"/>
<s:property value="#attr.test.name"/> <br>
<s:property value="#attr.test.age"/> <br>
将p放入session范围内。
<s:set value="#p" name="test" scope="session"/>
${sessionScope.test.name} <br>
${sessionScope.test.age} <br>

这里发现一个struts2 s标签问题,<s:set value="jkadf1213" name="test"/> ${test}发现了获取不到值,value="'jkadf1213'" 如果是字符串的话,在双引号里面还要加单引号才能获取到值。

关于struts2里面s:set 和s:if的问题,

Java代码 复制代码
  1. <s:setname="seasonList"value="{'Spring',Summer,'Autumn','Winter'}"/>


这么是正确的,但是我们set一个map,这样就不行了:

Java代码 复制代码
  1. <s:setname="monthMap"value='#{"1":"Jan","2":"Feb","3":"Mar","4":"Apr","5":"May",
  2. "6":"Jun","7":"Jul","8":"Aug","9":"Sep","10":"Oct","11":"Nov","12":"Dec"}'/>


奇怪的是,前面必须要加一个#,感觉很奇怪,我也不知道为什么,希望研究过源码的给一个解答。

Java代码 复制代码
  1. <spanclass="s">
  2. <s:setname="monthMap"value="#{'1':'Jan','2':'Feb','3':'Mar','4':'Apr','5':'May','6':'Jun','7':'Jul','8':'Aug','9':'Sep','10':'Oct','11':'Nov','12':'Dec'}"/>
  3. <s:setname="currentMonth"value="%{chargeMonth}"/>
  4. <selectname="chargeMonth"class="styled">
  5. <optionvalue="">--SelectMonth--</option>
  6. <s:iteratorvalue="#monthMap"id="month">
  7. <optionvalue="<s:propertyvalue='key'/>"
  8. <s:iftest="%{key==#currentMonth}">
  9. selected="selected"
  10. </s:if>
  11. >
  12. <s:propertyvalue='value'/>
  13. </option>
  14. </s:iterator>
  15. </select>


发现这样不行,后来经过我反复的测试,当选择10,11,12时候能正确的将selected加上,但是选择前面的数字怎么都不行,后来经我观察,前面我将字符串用的是’,估计在后台反射的时候将其类型错误的转化成char类型了,但是估计当判断length大于1的时候,将其转化成字符串了,所以能够正确。不知道我这么猜的对不对,贴出来分享一下吧,以后希望这样的问题不能在犯了。
我修改为下面的就可以了:

Java代码 复制代码
  1. <s:setname="monthMap"value='#{"1":"Jan","2":"Feb","3":"Mar","4":"Apr","5":"May","6":"Jun","7":"Jul","8":"Aug","9":"Sep","10":"Oct","11":"Nov","12":"Dec"}'/>
  2. <s:setname="currentMonth"value="%{chargeMonth}"/>
  3. <selectname="chargeMonth"class="styled">
  4. <optionvalue="">--SelectExpirationMonth--</option>
  5. <s:iteratorvalue="#monthMap"id="month">
  6. <optionvalue="<s:propertyvalue='key'/>"
  7. <s:iftest="%{key==#currentMonth}">
  8. selected="selected"
  9. </s:if>
  10. >
  11. <s:propertyvalue='value'/>
  12. </option>
  13. </s:iterator>
  14. </select>


分享到:
评论

相关推荐

    struts2 <s:if>标签使用

    struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用

    struts 2 s标签 struts 2 s标签

    struts 2 s标签 a标签创建一个HTML超链接,等价于HTML 的 示范代码: &lt;s:a href="login.action"&gt;登陆&lt;/s:a&gt;

    struts2<s:if>使用心得

    taskInstanceId=&lt;s:property value="id"/&gt;" &gt;我来处理)&lt;/s:if&gt; &lt;s:elseif test='{#taskName == "受评对象准备评级资料"}'&gt; ${pageContext.request.contextPath}/ga/needModify.action?taskInstanceId=&lt;s:...

    Struts2标签库

    (3) &lt;s:if&gt; 、&lt;s:elseif&gt;、&lt;s:else&gt; (4) &lt;s:iterator&gt; (5) &lt;s:include&gt; (6) &lt;s:form&gt;、&lt;s:hidden&gt; (7) &lt;s:textfield&gt;、&lt;s:password&gt;、&lt;s:checkbox&gt;、&lt;s:textarea&gt; (8) &lt;s:select&gt;、&lt;s:radio&gt;、&lt;s:checkboxlist&gt;

    struts2标签实例(s:textfield、s:select) + spring

    这个是自己试验的实例,不多,只有s:textfield和s:select。里面有注释,页面、xml和action里的注释序号都是相互对应的。jar都在,直接去掉注释就可以运行。我用的开发环境是jdk5和myeclipes5

    Struts2中使用标签实现组合查询和带分页的例子

    NULL 博文链接:https://z18022893621.iteye.com/blog/1956098

    struts2 标签库 帮助文档

    struts2框架的标签库分为三类: 用户标签:生成HTML元素 非用户标签:数据访问、逻辑控制等。 AJAX标签:支持AJAX技术。 用户界面标签又分两类: 表单标签:生成HTML页面的from元素 非表单标签:生成页面上的...

    Struts2标签 s:if test 判断String类型的对象属性值和单字符是否相等的问题

    &lt;s:if&gt; 在进行字符创和字符比较时,会忽略一些细节,对于对该控件不是经常使用的,需要注意与字符和字符串的比较的区别

    struts2的标签库

    这是一份关于struts2...&lt;s:if&gt;:拥有一个test属性,其表达式的值用来决定标签里内容是否显示。&lt;s:if test="#request.username=='hzd'"&gt;欢迎hzd&lt;/s:if&gt; &lt;s:elseif&gt;:同上。 &lt;s:else&gt; …… …… 很实用的,就是简洁明了

    Struts2标签库的所有

    (3) &lt;s:if&gt; 、&lt;s:elseif&gt;、&lt;s:else&gt; (4) &lt;s:iterator&gt; (5) &lt;s:include&gt; (6) &lt;s:form&gt;、&lt;s:hidden&gt; (7) &lt;s:textfield&gt;、&lt;s:password&gt;、&lt;s:checkbox&gt;、&lt;s:textarea&gt; (8) &lt;s:select&gt;、&lt;s:radio&gt;、&lt;s:checkboxlist&gt;

    struts2的s标签

    struts2的s标签_API_Java_struts_程序开发

    Struts2实例 国际化 类型转换 struts标签

    一个struts2的用户管理实例,涉及增删改查。 主要用到的技术: 1.struts2 2.国际化 3.类型转换 4.struts标签

    struts2标签库struts2标签库struts2标签库

    struts2标签库struts2标签库struts2标签库struts2标签库

    Struts2通用标签用法示例

    主要介绍Strus2中的通用标签,主要有&lt;s:url&gt;, &lt;s:set&gt;, &lt;s:push&gt;, &lt;s:if&gt;, &lt;s:elseif&gt;, &lt;s:else&gt;, &lt;s:iterator&gt;, &lt;s:sort&gt;, &lt;s:date&gt;, &lt;s:a&gt;等几个标签的具体用法,希望能对大家有帮助。

    struts2标签使用例子

    struts2标签使用例子 struts2标签使用例子 struts2标签使用例子struts2标签使用例子

    STRUTS:struts2标签库

    STRUTS:struts2标签库

    struts2标签库例子

    主要介绍了struts2的标签的详细使用例子说明

    struts2-s标签

    那就从简单的标签说起吧!1.x中常用的标签只有4中html、bean、logic、tiles ...&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列

    struts2 标签库使用文档

    Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: 用户界面标签(UI标签):主要用来生成HTML元素的标签。 表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。 非表单标签:主要用于生成...

    struts2 自定义标签

    通过struts2 自定义标签实例,可以用这个对项目中的实现自定义标签。从而减少代码。

Global site tag (gtag.js) - Google Analytics