解决extjs日期精确到分钟时被struts丢失时分秒的问题

本文探讨了在使用ExtJS时遇到的日期控件格式精确度问题,即在Struts中提交数据时丢失分钟秒信息。提出了两种解决方案:修改Action中属性类型为字符串以避免类型转换问题,或者手动进行格式转换。通过示例代码展示了具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:
extjs 当日期控件的格式精确到分钟时,提交到struts的时候会丢失精度,只保留年月日,没有了时分秒。
解决办法:
1、将action中与前台对应的属性类型由date修改为string 这样就不会有类型转换的问题。
2、手动转换,string的类型还是不能直接赋给类型为date的属性的。就只能现手动转换一下了。
js:

{
columnWidth : .5,
layout : 'form',
border : false,
items : [{
name : 'signDate',
fieldLabel : '签发时间',
labelStyle : "text-align: right;",
xtype : 'datefield',
format : 'Y-m-d H:i',
cls : 'key',
allowBlank : true,
menu : new DatetimeMenu(),
anchor : '90%'
}]
}


Action:

public class WeatherAction extends BaseAction {

private String signDate; //签发日期



////////////////////////////////////////////////////////////////

public String getSignDate() {
return signDate;
}
public void setSignDate(String signDate) {
this.signDate = signDate;
}


////////////////////////////////////////////////////////////////////////
/**
*
*/
public void save() throws IllegalAccessException, InvocationTargetException{
ListRange<WeatherInfo> formList = new ListRange<WeatherInfo>();
String message = "";
boolean result = false;

WeatherInfo wi = new WeatherInfo();//this.getModelByForm();
BeanUtils.copyProperties(wi, this);
wi.setSignDate(DateUtil.getDateFromString(signDate,"yyyy-MM-dd HH:mm"));//按指定格式将String转换为Date
LoginUserInfo user = this.getLoginUserInfo();
try{
weatherService.saveOrUpdate(wi,user);
result = true;
}catch(Exception e){
e.printStackTrace();
message = MessageConstants.ACTION_SAVE_SERVICE_FAILURE;
if (e.getCause() instanceof BaseDaoException){
message = MessageConstants.ACTION_SAVE_DB_FAILURE;
}
}

formList.setMessage(message);
formList.setSuccess(result);
this.outJson(formList);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值