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更改它,或使用自定义转换器。