Tin's Blog

You are coming a long way, baby~Thinking, feeling, memory...

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  128 随笔 :: 0 文章 :: 221 评论 :: 0 Trackbacks

今天浏览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的资源文件命名规则):

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

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

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

webwork.date.format.past = { 0 } ago 
webwork.date.format.future
= in { 0
webwork.date.format.seconds
= an instant 
webwork.date.format.minutes
= { 0 , choice , 1 #one minute| 1 <{ 0 } minutes} 
webwork.date.format.hours
= { 0 , choice , 1 #one hour| 1 <{ 0 } hours}{ 1 , choice , 0 #| 1 # ,  one minute| 1 < ,  { 1 } minutes} 
webwork.date.format.days
= { 0 , choice , 1 #one day| 1 <{ 0 } days}{ 1 , choice , 0 #| 1 # ,  one hour| 1 < ,  { 1 } hours} 
webwork.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类型的数据默认会显示到毫秒……请注意。

posted on 2006-03-28 20:00 Tin 阅读(2548) 评论(3)  编辑  收藏 所属分类: Webwork相关

评论

# re: Webwork 2.2.2新增的ww:date的用法 2006-03-29 13:23 艾尘
RichTextEditor 的标签在的我Firefox下无法编辑。。只能用IE。哎。。  回复  更多评论
  

# re: Webwork 2.2.2新增的ww:date的用法 2006-03-31 11:43 Tin
RichTextEditor其实就是FCK Editor,在FF应该是可以使用的。
你可以看看是不是你的设置出了什么问题。  回复  更多评论
  

# re: Webwork 2.2.2新增的ww:date的用法 2007-11-24 15:01 阿连
RichTextEditor 标签有个 checkBrowser 属性,自动检查浏览器版本,设置了么?  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: