JFinal从页面获取参数转换成Date类型报错

SkipperD 发布于 2013/03/19 21:26
阅读 1K+
收藏 0

@JFinal 你好,想跟你请教个问题:JFinal使用getModel获取页面传来的一个对象,其中有字段为Date类型的,在类型转换时报错了,说格式只能为"yyyy-MM-dd",但是我要传得是"yyyy/MM/dd"格式的,请问这个应该怎么做?

加载中
1
SkipperD
SkipperD

不可以像Struts一样弄一个自定义类型转换器的么,那样就可以自己定义这个类型转换了。

0
CQRS恶棍
CQRS恶棍
自动转换有难度,其实你可以换个思路,用另外一个字段记录这个日期值 ,然后在Controller利用getPara()获取以后,自己将它转换成你需要的Date类型
0
JFinal
JFinal
这个考虑在未来的版本中通过配置解决
0
如梦技术
如梦技术
var time = 'yyyy/MM/dd'; 
var data = time.replace(/\//g, '-'); 
console.log(data);
前端转一下吧,这种感觉不要折腾到后端处理!
0
GeneGuo
GeneGuo

引用来自“JFinal”的答案

这个考虑在未来的版本中通过配置解决

配置解决思路是好。

具体方法个人感觉可以参考 apache lang 包中 DateUtils.parse 方法,给定一个 pattern[] 按顺序解析,解析成就就返回。

代码片断截取如下:

String[] pattern = { 
    "yyyy-MM-dd", 
    "yyyy-MM-dd HH:mm:ss",
    "yyyy年MM月dd日",
    "yyyy年MM月dd日 HH:mm:ss"
};
String source = "2012年12月12日 12:12:12";
SimpleDateFormat sdf = new SimpleDateFormat();
ParsePosition pos = new ParsePosition(0);
for (int i = 0; i < pattern.length; i++) {
    sdf.applyPattern(pattern[i]);
    Date date = sdf.parse(source, pos);
    if(date != null){
        System.out.println("解析成功:" + date);
        break;
    }
}
System.out.println("无法解析");

返回顶部
顶部