webwork2不能正确截获由js形成的日期属性
2006-08-30 09:51
706 查看
解决webwork2中不能正确截获由js形成的日期属性问题
[方法]将PeriodView日期类型属性设为String,在页面用正则表达式判断,params和model-driven拦截器
拦截属性(String类型)后再转变为Date类型设置到Period对象中,具体实现:
[1]在页面写js
<script language="javascript" type="text/javascript">
function strDateTime(id) {
var str = document.getElementById(id).value;
var reg = /^(/d{4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()== r[7])
}
function displayInfo(){
alert("时间格式错误,请仿照这样的格式输入:2006-8-20 12:12:00");
}
function validateForm(){
if (!strDateTime("initiatedEndDate")){
displayInfo();
document.getElementById("initiatedEndDate").focus();
return false;
}
}
</script>
[2]在action 中写:
public String execute() {
period = new Period();
period.setDescription("");
period.setInitiatedEndDate(getDate(model.getInitiatedEndDate()));
period.setPurchasedEndDate(getDate(model.getPurchasedEndDate()));
period.setSerialNum(model.getSerialNum());
period.setUploadEndDate(getDate(model.getUploadEndDate()));
period.setDrawingLotDate(getDate(model.getDrawingLotDate()));
period.setCat(lotCatManager.get(model.getCatId()));
periodManager.insertPeriod(period);
return SUCCESS;
}
private Date getDate(String strDate){
Date date = DateUtil.toCalendar(strDate).getTime();
if (date ==null) return new Date();
return date;
}
其中的DateUtil.toCalendar(String strDate)方法:
/**
* 把一个日期字符串转换成Calendar形式
*
* @param strDate
* @return
*/
public static final SimpleDateFormat dateTimeFormatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
...
public static final Calendar toCalendar(String strDate) {
Calendar cale = null;
try {
Date thisDate = dateTimeFormatter.parse(strDate);
cale = Calendar.getInstance();
cale.setTime(thisDate);
} catch (Exception e) {
return null;
}
return cale;
}
[方法]将PeriodView日期类型属性设为String,在页面用正则表达式判断,params和model-driven拦截器
拦截属性(String类型)后再转变为Date类型设置到Period对象中,具体实现:
[1]在页面写js
<script language="javascript" type="text/javascript">
function strDateTime(id) {
var str = document.getElementById(id).value;
var reg = /^(/d{4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()== r[7])
}
function displayInfo(){
alert("时间格式错误,请仿照这样的格式输入:2006-8-20 12:12:00");
}
function validateForm(){
if (!strDateTime("initiatedEndDate")){
displayInfo();
document.getElementById("initiatedEndDate").focus();
return false;
}
}
</script>
[2]在action 中写:
public String execute() {
period = new Period();
period.setDescription("");
period.setInitiatedEndDate(getDate(model.getInitiatedEndDate()));
period.setPurchasedEndDate(getDate(model.getPurchasedEndDate()));
period.setSerialNum(model.getSerialNum());
period.setUploadEndDate(getDate(model.getUploadEndDate()));
period.setDrawingLotDate(getDate(model.getDrawingLotDate()));
period.setCat(lotCatManager.get(model.getCatId()));
periodManager.insertPeriod(period);
return SUCCESS;
}
private Date getDate(String strDate){
Date date = DateUtil.toCalendar(strDate).getTime();
if (date ==null) return new Date();
return date;
}
其中的DateUtil.toCalendar(String strDate)方法:
/**
* 把一个日期字符串转换成Calendar形式
*
* @param strDate
* @return
*/
public static final SimpleDateFormat dateTimeFormatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
...
public static final Calendar toCalendar(String strDate) {
Calendar cale = null;
try {
Date thisDate = dateTimeFormatter.parse(strDate);
cale = Calendar.getInstance();
cale.setTime(thisDate);
} catch (Exception e) {
return null;
}
return cale;
}
相关文章推荐
- 关于js中 document.body.scrollTop 不能返回正确值的原因
- yii blog页面不能正确显示js,css文件的原因分析
- Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个
- js中部分属性不能用于if条件判断
- js验证结束日期不能小于开始日期
- JS选择日期控件。需要使当前日期以后的日期不能选择
- easyUI的列表控件(datagrid)日期列不能正确显示的解决方法
- easyUI的列表控件(datagrid)日期列不能正确显示Json格式数据的解决方法
- cocos code ide PrebuiltRuntimeJs.exe不能正确运行;有可能模拟器发生错误或被防火墙拦截
- 日期时间段选择 js判断开始日期是否在结束日期之前,且开始日期和结束日期都不能超过当日的日期
- js为什么不能正确处理小数运算?
- Js位置与大小(1)——正确理解和运用与尺寸大小相关的DOM属性
- WebForm框架页面上js修改服务端控件导致后台不能正确获取到控件值的问题【总结】
- easyUI的datagrid控件日期列不能正确显示Json格式数据的解决方案
- DatePicker 控件在5.0以上版本 焦点释放问题 手动输入点击确定按钮不能正确获取到日期优化
- js判断日期输入是否正确
- js: ie 8中class不能做于{}对象的自定属性
- IE9.0或者360下js(JavaScript、jQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(json、string)无法获取
- 修正Raize的时间日期控件不能正确显示星期几的问题
- 一个JS小玩意 几个属性相加不能超过一个特定值.