Struts2中的日期转换
我想知道如何在Struts2中将String
转换为Date
。 我有一个简单的表单,用户以这种格式"yyyy-MM-dd"
提供日期。 将Sturts2地图表格提交给bean。 我在日期转换中遇到错误。 我谷歌很多,并声明我们必须使用自定义类型转换器。 我不想为日期转换编写自定义类型转换器。 我认为Struts2中应该有一个简单的数据转换机制,因为数据转换是非常常见的function。
JSP
这是用户输入输入的JSP。
模型类
@Entity @Table(name = "Domain") public class IdentityProvider implements Serializable { @Id @Basic(optional = false) private String url; private String domainName; private int noOfLicense; private int userActiveDuration; private int activeUsers; private Date licenseExpireDate; private String notes; @GeneratedValue(strategy = GenerationType.IDENTITY) private String domainIdCode; public IdentityProvider(String name, String url, int nol, int time,Date d,String notes) { this.setDomainName(name); this.setUrl(url); this.setNoOfLicense(nol); this.setUserActiveDuration(time); this.setLicenseExpireDate(d); this.setNotes(notes); } public IdentityProvider() { } // Getter Setter }
行动类
public class DomainManagementAction extends ActionSupport implements ModelDriven { private IdentityProvider idp = new IdentityProvider(); public IdentityProvider getIdp() { return idp; } public void setIdp(IdentityProvider idp) { this.idp = idp; } public String saveDomain() { IDPBroker broker = new IDPBroker(); broker.saveDomain(idp); return ActionSupport.SUCCESS; } @Override public IdentityProvider getModel() { // TODO Auto-generated method stub return idp; } }
Struts2 类型转换
内置类型转换支持
类型转换由XWork实现。
XWork将自动为您处理最常见的类型转换。 这包括支持对以下各项的字符串进行转换:
串
布尔值/布尔值
字符/字符
int / Integer,float / Float,long / Long,double / Double
日期 – 使用与当前请求关联的区域设置的SHORT格式
数组 – 假设各个字符串可以转换为单个项目
集合 – 如果不能确定对象类型,则假定它是一个String并创建一个新的ArrayList
JAVA中的SHORT格式 :
Style US Locale French Locale SHORT 6/30/09 30/06/09
这意味着它已经可以工作,但只能使用SHORT格式,并且不可配置。 尝试一下。
然后你可以在发送之前用一些javascript hack改变客户端的值,或者复制并粘贴这个小转换器 ,或者使用jQuery datetimepicker(推荐),你唯一的问题是哪个主题是最酷的:)
编辑
在一些加密评论之后,我已经尝试过,显然它就像文件所述。
- 如果您的Locale是(例如)
en_US
,则需要以MM/dd/yy
格式发送字符串数据。 - 如果您的Locale是(例如)
it_IT
,则需要以dd/MM/yy
格式发送字符串数据。 - 如果使用
en_US
Locale输入dd/MM/yy
,则会出现validation错误和INPUT结果。 - 如果您尝试使用
-
而不是/
,它将失败相同。 - 如果您以其他格式输入日期,例如。
dd/MM/yyyy
(与SHORT不同但适用于您的Locale),您的日期将正确设置相同。 - 如果您在JSP中读取了Action日期而没有对其进行格式化,则它将始终显示在SHORT中。
然后,如上所述,如果您需要让用户手动输入日期,请告诉用户尊重您的语言环境的正确格式(例如,
或者在插入后通过javascript更改它,或使用自定义转换器。