Webwork 2.2.2新增的ww:date的用法

今天浏览WW的Wiki,结果无意发现ww:date标签的用法,挠头一想以前没有见过呀,仔细一看原来是2006/3/21才加上的。
会头看看项目发现用的ww 2.2.1中没有这个标签,心想是不是发布新版本了?
果不出所料!发现OPENSYMPHONY已经发布2.2.2了。
不过2.2.2是在Opensymphony下的最后一个版本了,以后的版本就会以Struts Action 2.0的形式发布了,而后者今年8月才发布,中间的日子估计只能靠nightly build了。
说说变化,发现增加了RichTextEditor,经考察就是我们熟悉的FCK Editor。发现还增加了nifty corners,这是一个不用images的圆角容器(css+js),估计用在了某个theme里面。还有J2SE5的支持也更加完善,现在已经可以支持泛型Collection的反射(无需-conversion文件了),还支持annotation风格的validation声名(如此像Stripes那样的Web框架就没什么可吹嘘的了)。其它的变化请参考他们的ReleaseNotes。
http://www.opensymphony.com/webwork/wikidocs/Release%20Notes.html

说说新添加的ww:date标签。很多朋友可能都认为ww:property输出date比较不如意,以前很多解决方案感觉都不够灵活。WW肯定察觉了,新增加的ww:date把玩了一下发现非常好用,所以推荐给大家。
语法非常简单:
name:你取值的ognl表达式
nice:是否使用易读(readable notations)的模式,其实就是类似conflunce里面显示时间的方式,类似“in 2 hours, 14 minutes”
format:就是我们常用的时间format,例如“yyyy-MM-dd hh:mm”
id:就是HTML中的元素id

使用起来如下,官方的例子:
<ww:date name="person.birthday" format="dd/MM/yyyy" />
按照“dd/MM/yyyy”格式显示
<ww:date name="person.birthday" format="%{getText('some.i18n.key')}" />
将format定义到i18n文件中的方式,这个很常用:D
<ww:date name="person.birthday" nice="true" />
使用易读(readable notations)的模式
<ww:date name="person.birthday" />
使用默认的格式输出

其中显示的规则如下:
1、如果制定了nice="true"则优先以易读(readable notations)的模式显示
2、如果nice="false"则按照指定的format显示
3、如果上面两个属性都没有指定,则从默认的资源文件中寻找webwork.date.format这个i18n的key,按照它显示
4、如果还没有找到则按照DateFormat.MEDIUM格式显示
5、特别之处:如果从ValueStack没有找到值,则默认显示空白(而不是null)

就这么简单,感觉读(readable notations)模式尤其有趣,非常好用,你还可以给它指定i18n的显示方式。
下面共享一下我写的zh_cn版本,你只需要将一下内容拷贝到classpath下面的default.properties文件中就可以了(也可以按照i18的资源文件命名规则):

None.gif webwork.date.format.past = { 0 } 以前
None.gifwebwork.date.format.future
= 在 { 0
None.gifwebwork.date.format.seconds
= 几秒钟前 
None.gifwebwork.date.format.minutes
= { 0 , choice , 1 #一分钟| 1 <{ 0 } 分钟} 
None.gifwebwork.date.format.hours
= { 0 , choice , 1 #一小时| 1 <{ 0 } 小时}{ 1 , choice , 0 #| 1 #零一分钟| 1 <零 { 1 } 分钟} 
None.gifwebwork.date.format.days
= { 0 , choice , 1 #一天| 1 <{ 0 } 天}{ 1 , choice , 0 #| 1 #零一小时| 1 <零 { 1 } 小时} 
None.gifwebwork.date.format.years
= { 0 , choice , 1 #一年| 1 <{ 0 } 年}{ 1 , choice , 0 #| 1 #零一天| 1 <零 { 1 } 天} 

输出的样子如:“一天零 8 小时 以前”,“4 天零 23 小时 以前”……

你也可以自己翻译,默认的key如下:
i18n文件默认为default.properties

None.gif webwork.date.format.past = { 0 } ago 
None.gifwebwork.date.format.future
= in { 0
None.gifwebwork.date.format.seconds
= an instant 
None.gifwebwork.date.format.minutes
= { 0 , choice , 1 #one minute| 1 <{ 0 } minutes} 
None.gifwebwork.date.format.hours
= { 0 , choice , 1 #one hour| 1 <{ 0 } hours}{ 1 , choice , 0 #| 1 # ,  one minute| 1 < ,  { 1 } minutes} 
None.gifwebwork.date.format.days
= { 0 , choice , 1 #one day| 1 <{ 0 } days}{ 1 , choice , 0 #| 1 # ,  one hour| 1 < ,  { 1 } hours} 
None.gifwebwork.date.format.years
= { 0 , choice , 1 #one year| 1 <{ 0 } years}{ 1 , choice , 0 #| 1 # ,  one day| 1 < ,  { 1 } days} 

为2.2.2的Webwork发布兴奋之余也为它的未来有些担心,到Struts Action Framework发布还有挺久,其中的真空期很难等待呀,WW一向有些小毛病,靠nightly build改善还是很麻烦的。
2.2.2的更多功能的探索希望大家能够互相交流。

还有点补充:现在用ww:property输出Date类型的数据默认会显示到毫秒……请注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值