struts2常用标签总结

<s:date name="person.birthday" format="dd/MM/yyyy" />
<s:date name="person.birthday" format="%{getText('some.i18n.key')}" />
<s:date name="person.birthday" nice="true" />
<s:date name="person.birthday" />
1、Struts2中对标签中的的应用,如:test="${age}"   test="#age"   test="%{#age}"三种的用法。
test="${age}"这种方法一般是在2个地方使用。国际化中应用,咱们这个目前还不牵扯。另一个是配置文件中,如web.xml中。(主要是读属性文件中的值需要这么写在jsp中是el表达式)
test="#age"这个用得最常见,基本上能应付的情况下都用这种写法。
test="%{#age}"这个是在什么地方用呢?举个例子。
value="#age",这个是一个age变量呢还是字符串"#age"?当然,我们的意图是是个变量,但由于不能区分,所以书写为test="%{#age}"这种格式。
2、struts2中标签的使用,如:
<s:if test='%{#attr.user.userSex == "M"}'>男</s:if>
要使user.userSex的值等于字符串,一般情况下我们会这样书写:
<s:if test="%{#attr.user.userSex == 'M'}">男</s:if>
或者再不动的也会这样书写
<s:if test="%{#attr.user.userSex == "M"}">男</s:if>
我把这几种都测试了只有这种情况正常
<s:if test='%{#attr.user.userSex == "M"}'>男</s:if>
这里主要注意的是单引号和双引号所用的位置,没为什么(估计是字符串拼接的问题,我们在html组件中嵌套java代码也常会用这种问题),这么写就成。
3、关于showModalDialog清除缓存,防止模式窗口页面不更新情况(css的修改同样存在)作弹出窗口的时候,发现只有重起服务器弹出窗口的值才显示最新更新过的值,确定是由于调用就得数据缓存引起的。在网上查了一下相关解决方法,比如HTML、ASP、JSP都有它们自己的解决方法,但是比较麻烦,要在每个页面写上,或者利用iframe方式来解决。
因为咱们用的是一个写好的弹出窗口组件,所以想办法把它加在这个JS中就方便多了。后来发现了一种方法,就是利用当前访问时间来判断,(new Date()).getTime(),因为访问的时间肯定不一样,所以这个值也不一样,这样他就会调用新的数据查询,而不是依然用的是缓存中的数据信息。格式:URL+'?ts=' + (new Date()).getTime(),至于这里用?还是&要根据条件自己作出判断方法。
4、日期格式化Struts 2 教程中对标签的介绍就那几种,比如,对日期格式化都没做介绍和提示,当我们用<s:property>输出时间数据时,没有参数可以是日期格式化,后来在配置文件struts-tags.tld中查了一下,他本来就有一个<s:date>的标签,可以根据程序员设置而显示日期的相应格式。比如,我们使用<s:property value="user.userBirthday" />时显示为"84-6-30 00:00:00.000",而当我们使用<s:date name="user.userBirthday" format="yyyy-MM-dd" />时则显示"1984-06-30",格式要求完全可以根据format后面所定义的格式显示。
5、关于 <s:property> 的输出问题,<s:property>可以输出action 中的对象属性 action 中存在对象名为user 的对象,我们输出它的属性时的写法
   <s:property value="user.name">
    <s:property> 还可以与<s:iterator>标签嵌套使用 例如
    <s:iterator id="user" name="userList">
                  <s:property value="#user.name">
    </s:iterator>
***到此处需要注意的是,如果是单纯的对象输出(不是list里的对象输出)在<s:property>标签的value中不需要加入#
     <s:iterator> 与 <s:property> 标签嵌套使用,不仅仅可以输出,对象中的属性,还可以输出List 里的字符串,甚至还可以输出 list中嵌套的list
      写法如下:<s:iterator id="list" value="list">
                            <s:property value="#list[0]"/>
                </s:iterator>
     <s:if/>标签可以和 <s:iterator> 主要应用<s:iterator status="id" > 中的 status 属性 可以根据status值是否为奇数输出相应的内容,如改变背景色
     <s:if text="#id.odd">
             <tr class=""/>
     </s:if>
还是关于 <s:iterator>
                  <s:property/> 的使用,这里说的是多层对象嵌套的问题。
          </s:iterator>
        举例如下User类中用一个属性为Addr 的对象,引用名为addr addr的属性值为字符串home= "home"
那我们要把所有的home都打印出来应该这么写
       <s:iterator id="home" value="homeList">
                  <s:property #home.addr.home/>此标签支持多层迭代,具体多少层不清楚。
          </s:iterator>
这个是后台直接存的就是list。并且没有迭代的。
<s:property value="testedThesisInfo.get(3)"/> 见studentThesisAction return 的commit。
//struts2 的编码
&course_name=<s:property value="#%{java.net.URLEncoder.encode(myClassCourses1.courseName,'UTF-8')}"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值