Strut2 有比较完善的使用OGNL的jsp标签自动转化为对应的后台对象的功能。
这里java.util.Date的自动转化有一些需要注意的地方(局部转换):
1.必须要在struts的xml文件中,在对应action里加入一个name为“input”的result项。
不然使用的时候,strut2框架会报错,如下:
提示缺少一个名为 input 的result结果。
2. 如果需要使用自定义转化Date的话,对应的properties文件中的对应关系,最后一定不能有空格!还有不能习惯性的加“;”,不然会提示找不到类。
3. Date自动转化的格式的注意事项。
struts2框架可以实现对字符串对Date格式的自动转换,但对于用户在浏览器输入的格式还是有要求的。具体来讲,Struts2对Date格式转换只能识别短 (Short)格式,并且和用户操作系统Local默认时间类型(中国标准,美国标准)有关。
以上的解释怎么解读呢?
所谓短格式,就是如下图所示,图例展示的都是系统Local地为中华人民共和国的短日期格式。也就是说,如果用户的系统Local是中国,那么下面的短周期格式Struts2都能够正常转化。
下图是Local位美国的短日期格式。
特别注意,yyyy-MM-dd或者yyyy/MM/dd这种格式在中国格式非常流行,但是在很多英语地区就不行,
比如:
前面是铺垫,接下来说重点。由于Edge、IE和Windows是一家,所以使用微软家的浏览器要注意浏览器的默认语言是哪家,在哪里设置呢?
IE11为例:
点击“设置首选语言项”
设置你想要的语言为首选语言。如果你设置了English(United States)首选语言,那么你在IE,Edge浏览器输入yyyy-MM-dd或者yyyy/MM/dd,转化就会报错。
值得强调的事情是Chrome有自己的语言体系,不受这个影响。Chrome的语言设置在这里:
所以Struts2转化时间是一件很蛋疼的事情。如果想让自己的系统工作可控一些,建议使用全局自定义转换。怎么转?网上有很多例子,我就不写了。