struts2 jsp->action 时间转换出错
jsp中时间是: 2013/12/18 18:05:06action中有个bean对象,其中有属性 creatTime, 类型是Date
当提交action时,就会报错,并且说日期设置出错
请问Bean对象中的日期类型应该用什么?
谢谢! --------------------编程问答-------------------- 你需要指定一下啊 使用易做图dateformat转换下啊
SimpleDateFormat dateformat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
转成这样的指定格式啊 --------------------编程问答--------------------
在哪里指定呢?不是直接转换吗?
action中的bean对象名称orgCata,有属性orgCata.createTime,类型为Date getter/setter方法都有
jsp中
<input type="text" name="orgCata.createTime" value="<s:date name="orgCata.createTime" format="yyyy/MM/dd HH:mm:ss" />" /> --------------------编程问答-------------------- 我觉得你从页面到后台最好用字符串,然后在后台去转换 --------------------编程问答-------------------- 前台传来的都是以字符串型式。而你用Date接收会报错的,改成String就行了 --------------------编程问答-------------------- 直接设置为和数据对应字段相同的类型。 --------------------编程问答-------------------- struts2的默认时间格式是yyyy-MM-dd HH:mm:ss你bean里面已经用了Date类型只是你的格式不对,这时你可以用struts2的类型转换器,自己写个专门针对时间的类型转换器
public class DateTypeConvertor extends StrutsTypeConverter{
//时间字符串转成Date(即是你页面传来的时间字符串)
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Date date=null;
if(values!=null&&values.length>0){
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
try {
df.parse(values[0]);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}
//将Date类型的数据转成时间字符串
@Override
public String convertToString(Map context, Object o) {
Date date=(Date)o;
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return df.format(date);
}
}
转换器写完后你可以指定到全局或局部.如果你整个项目的时间格式都是这样的可以指定到全局,我这里不清楚你是否整个项目都是这个格式使用局部转换器.
只要在这个Action相应的包上添加一个你Action类型-conversion.properties文件里面写上
#表示此action中orgCata属性的createTime属性使用DateTypeConvertor作转换
orgCata.createTime=DateTypeConvertor --------------------编程问答--------------------
Struts不是可以自动映射吗?为什么要自己在后台转换呢?
--------------------编程问答--------------------
createTime的类型是 Date,应该没有问题的吧 --------------------编程问答-------------------- 要自动转换,肯定是要配置的。有个类叫DefaultTypeConverter,继承这个类。还要创建properties文件,里面设置为ava.util.Date = xxxxx
xxxxx是继承DefaultTypeConverter的子类,在里面设置的。 --------------------编程问答--------------------
按照你的方法,不知道为什么还是不能自动转换,DateTypeConvertor.java这个类中的方法没有被执行。
现在有以下问题:
1.maven打包时,忽略了conversion.properties文件
2.后来手动把这个文件拷贝相应.class文件所在的包下面,重启tomcat,不能成功
不知道什么原因。。。 --------------------编程问答--------------------
conversion.properties文件名是否是ActionClassName-conversion.properties.是否放在action的同一个包下对于转换器的配置楼主更多的可以看struts2的开发文档 --------------------编程问答--------------------
如果应用到全局 xwork-conversion.properties 就是可以的 --------------------编程问答--------------------
struts2的默认时间格式是yyyy-MM-dd HH:mm:ss你bean里面已经用了Date类型只是你的格式不对,这时你可以用struts2的类型转换器,自己写个专门针对时间的类型转换器
public class DateTypeConvertor extends StrutsTypeConverter{
//时间字符串转成Date(即是你页面传来的时间字符串)
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Date date=null;
if(values!=null&&values.length>0){
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
try {
df.parse(values[0]);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}
//将Date类型的数据转成时间字符串
@Override
public String convertToString(Map context, Object o) {
Date date=(Date)o;
SimpleDateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return df.format(date);
}
}
转换器写完后你可以指定到全局或局部.如果你整个项目的时间格式都是这样的可以指定到全局,我这里不清楚你是否整个项目都是这个格式使用局部转换器.
只要在这个Action相应的包上添加一个你Action类型-conversion.properties文件里面写上
#表示此action中orgCata属性的createTime属性使用DateTypeConvertor作转换
orgCata.createTime=DateTypeConvertor
按照你的方法,不知道为什么还是不能自动转换,DateTypeConvertor.java这个类中的方法没有被执行。
现在有以下问题:
1.maven打包时,忽略了conversion.properties文件
2.后来手动把这个文件拷贝相应.class文件所在的包下面,重启tomcat,不能成功
不知道什么原因。。。
如果应用到全局 xwork-conversion.properties 就是可以的
找到原因了,conversion.properties文件名称写的不正确
之前写成Action对应的java类的名称作为前缀,即有java文件 AgencyMgmtAction.java,文件名称为AgencyMgmtAction-conversion.properties; 而这个action在struts.xml中对应的name是editAgency,改为editAgency-conversion.properties就可以了
--------------------编程问答-------------------- 不过有个奇怪问题,maven打包时,为什么会遗漏这个properties文件?? --------------------编程问答--------------------
不过有个奇怪问题,maven打包时,为什么会遗漏这个properties文件??
楼主你的pom.xml的maven打包配置文件是不是只编译打包.java
你可以在pom.xml里面的<resource>节点里面增加<includes>**/*.properties</includes> --------------------编程问答--------------------
不过有个奇怪问题,maven打包时,为什么会遗漏这个properties文件??
楼主你的pom.xml的maven打包配置文件是不是只编译打包.java
你可以在pom.xml里面的<resource>节点里面增加<includes>**/*.properties</includes>
Suciver, 能不能给个较为完整的pom.xml配置?
我直接在build下面增加resource后,properties文件是打包进去了,但是resources目录下的文件就不能打包进去
web开发,我是新手,公司就我一个人做这个东西,不懂的太多啊。。。
--------------------编程问答--------------------
不过有个奇怪问题,maven打包时,为什么会遗漏这个properties文件??
楼主你的pom.xml的maven打包配置文件是不是只编译打包.java
你可以在pom.xml里面的<resource>节点里面增加<includes>**/*.properties</includes>
Suciver, 能不能给个较为完整的pom.xml配置?
我直接在build下面增加resource后,properties文件是打包进去了,但是resources目录下的文件就不能打包进去
web开发,我是新手,公司就我一个人做这个东西,不懂的太多啊。。。
完整的配置文件你google下吧我手上现在没有了,像ant或者maven这样的配置文件我基本都是copy下来改改
补充:Java , Java EE