Waq*_*Ali 1 java struts2 date type-conversion struts2-interceptors
我想知道如何将转换String到Date在Struts2.我有一个简单的表单,用户以此格式提供日期"yyyy-MM-dd".将Sturts2地图表格提交给bean.我在日期转换中遇到错误.我谷歌它很多,并声明我们必须使用自定义类型转换器.我不想为日期转换编写自定义类型转换器.我认为Struts2中应该有一个简单的机制来进行数据转换,因为数据转换是非常常见的功能.
JSP
<s:form action="AddDomain">
<s:push value="idp">
<s:textfield name="domainName" label="Domain Name" />
<s:textfield name="url" label="Domain URL" />
<s:textfield name="noOfLicense" label="License Purchased" />
<s:textfield name="licenseExpireDate" label="License Expire Date"
title="YYYY-MM-DD like 2013-01-21" />
<s:textfield name="userActiveDuration" label="Active User Duration"
title="please mention in days" />
<s:textarea name="notes" label="Note" cols="30" rows="5" ></s:textarea>
<s:submit value="Add" />
</s:push>
</s:form>
Run Code Online (Sandbox Code Playgroud)
这是用户输入输入的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
}
Run Code Online (Sandbox Code Playgroud)
行动类
public class DomainManagementAction extends ActionSupport
implements ModelDriven<IdentityProvider> {
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Struts2 类型转换
内置类型转换支持
类型转换由XWork实现.
XWork将自动为您处理最常见的类型转换.这包括支持为以下各项转换为字符串和从字符串转换:
String
boolean/Boolean
char/Character
int/Integer,float/Float,long/Long,double/Double
date - 使用与当前请求
数组关联的Locale的SHORT格式 - 假设各个字符串可以转换为单个项
集合 - 如果不能确定对象类型,则假定它是一个String并创建一个新的ArrayList
JAVA中的SHORT格式:
Run Code Online (Sandbox Code Playgroud)Style U.S. Locale French Locale SHORT 6/30/09 30/06/09
这意味着它已经可以工作,但只能使用SHORT格式,并且不可配置.试试吧.
然后你可以在发送之前用一些javascript hack改变客户端的值,或者复制并粘贴这个小转换器,或使用jQuery datetimepicker(推荐),你唯一的问题是哪个主题是最酷的:)
在一些加密评论之后,我已经尝试过,显然它就像文件所述.
en_US,则需要以格式发送字符串数据MM/dd/yy.it_IT,则需要以格式发送字符串数据dd/MM/yy.dd/MM/yy使用en_USLocale 输入,则会出现验证错误和INPUT结果.-而不是/,它将失败相同.dd/MM/yyyy(与SHORT不同但适用于您的Locale),您的日期将正确设置相同.然后,如上所述,如果您需要让用户手动输入日期,请告诉用户尊重您的语言环境的正确格式(例如,
<label>Input a date (dd/mm/yyyy):</label>
<s:textfield name="aDate" />
<s:fielderror fieldName="aDate" />
Run Code Online (Sandbox Code Playgroud)
或者在插入后通过javascript更改它,或使用自定义转换器.
| 归档时间: |
|
| 查看次数: |
4311 次 |
| 最近记录: |