关于Web项目里的给表单验证控件添加结束时间不得小于开始时间的验证方法,日期转换和前台显示格式之间,还有JSON取日期数据格式转换成标准日期格式的问题
项目里有些不同页面间的日期显示格式是不同的,
第一个问题:
比如我用日期控件WdatePicker.js导包后只需在input标签里加上onClick="WdatePicker()"就可以用了,但是默认是没有时分秒的,如果需要显示时分秒只需要加上WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})就行。
**************************************************************************************************************
第二个问题:
那么我用表单验证控件jquery.validate.js时需要比较结束时间一定要大于开始时间,这需要自己添加一个方法,js可以这么写:
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript">
//这个方法是转换年月日的日期格式的,
function getDate(strDate) {
var date = eval('new Date('
+ strDate.replace(/\d+(?=-[^-]+$)/, function(a) {
return parseInt(a, 10) - 1;
}).match(/\d+/g) + ')');
return date;
}
jQuery.validator.addMethod("fdate", function(value, element, param) {
//"fdate"是方法名,验证的时候需要在开始和结束时间都输入完成后在结束时间etime那里验证
//value是元素的值,element是元素本身 param是参数
var end = getDate(value);
var begin = getDate($("#" +param).val());
if (begin > end) {
return false;
}
return true;
}, $.validator.format("结束时间不能小于开始日期"));
$(function() {
rules : {
name : {
required : true,
minlength : 5
},
qipai : {
required : true,
number : true
},
dijia : {
required : true,
number : true
},
stime : {
required : true,
dateISO : true
},
etime : {
required : true,
dateISO : true,
fdate : "stime" //"stime"当参数传进去了,加一个"#"stime.val()能取到我的开始时间的值
}
},
messages : {
name : {
required : "商品名必填",
minlength : jQuery.format("用户名不能小于{0}个字 符")
},
qipai : {
required : "起拍价必填",
number : "必须为数值类型"
},
dijia : {
required : "底价必填",
number: "必须为数值类型"
},
stime : {
required : "开始日期必填",
dateISO : true
},
etime : {
required : "结束日期必填",
dateISO : true
}
}
});
});
对照着我的html标签:
开始时间:<input type="text" name="stime" id="stime"
onClick="WdatePicker()" value="<fmt:formatDate value='${UGood.stime}' pattern='yyyy-MM-dd'/>"><br>
结束时间:<input type="text" name="etime" id="etime"
onClick="WdatePicker()" value="<fmt:formatDate value='${UGood.etime}' pattern='yyyy-MM-dd'/>"><br>
***********************************************************************************************
第三个问题:
我的Oracle数据库里是Date类型,由于精确日期的需要,我的JaveBean的日期类型是Timestamp类型可以精确到时分秒,那么我查询页面根据发布日期查询商品的时候不需要精确到时分秒,我的input标签从数据库里读到的值却又显示时分秒怎么办呢?
可以在jsp页面顶部加上指令<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
在标签里::<input type="text" name="stime" id="stime"
onClick="WdatePicker()" value="<fmt:formatDate value='${UGood.stime}' pattern='yyyy-MM-dd'/>">就只显示年月日的格式了。
***********************************************************************************************************
第四个问题,我用ajax从后台取数据的时候,需要把实体类的信息转换成JOSN格式,那么我遇到的问题是JSON控件结合Hibernate里级联出现死循环的问题,
我的Precord记录类里面对应Goods类和User类都是多对一的关系,Precord类里有
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "USERID")
private PUser pUser;
和
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "GID")
private Goods goods;
而Goods类和User类里面也各有一个一对多的关系,
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "goods")
private Set<Precord> precords = new HashSet<Precord>(0);
和
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pUser")
private Set<Precord> precords = new HashSet<Precord>(0);
网上搜了下查处解决方式为:
JSONArray array = new JSONArray();
JsonConfig config = new JsonConfig();
//config.registerJsonValueProcessor(Timestamp.class,new JsonDateValueProcessor());
config.setJsonPropertyFilter(new PropertyFilter() {
@Override
public boolean apply(Object arg0, String name, Object arg2) {
if (name.equals("precords")) {
return true;
}
return false;
}
});
这样Json就出来了
但是又遇到一个问题,我的JSON读取到的时间类型格式都为:
"ptime":{"date":23,"day":0,"hours":23,"minutes":5,"month":10,"nanos":0,"seconds":59,"time":1416755159000,"timezoneOffset":-480,"year":114}
那么往前台传的时候就费劲了,网上搜到的方法:
在刚才过滤死循环的代码里注释去掉后就能用,
config.registerJsonValueProcessor(Timestamp.class,new JsonDateValueProcessor());
这个代码里的new JsonDateValueProcessor() 这个类是自己手写的实现JsonValueProcessor接口的类,类里的具体代码为:
public class JsonDateValueProcessor implements JsonValueProcessor { private String format = "yyyy-MM-dd HH:mm:ss";
public JsonDateValueProcessor() { // TODO Auto-generated constructor stub }
@Override
public Object processArrayValue(Object value, JsonConfig jcf) {
String[] obj = {};
if (value instanceof Date[]) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date[] dates = (Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sdf.format(dates[i]).trim();
}
}
return obj;
}
@Override public Object processObjectValue(String key, Object value, JsonConfig jcf) {
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str.trim();
}
return value == null ? null : value.toString();
}
}
这样时间就转换成了自己想要的格式:
"ptime":"2014-11-23 23:05:59"
关于Web项目里的给表单验证控件添加结束时间不得小于开始时间的验证方法,日期转换和前台显示格式之间,还有JSON取日期数据格式转换成标准日期格式的问题的更多相关文章
- 【ASP.NET 基础】表单和控件
1.HTML表单的提交方式 对于一个普通HTML表单来说,它有两个重要的属性:action 和 method.action属性指明当前表单提交之后由哪个程序来处理,这个处理程序可以是任何动态网页或者 ...
- My97DatePicker日期控件,开始时间不能大于结束时间,结束时间不能小于开始时间
在只做项目的时候,需要用到一个日期控件,之前用到过my97,感觉挺好的,兼容性很强,配置也比较容易 当开始时间不能大于结束时间和结束时间不能小于开始时间,这个需要一个判定的,要不然不就乱套了 在my9 ...
- [WPF自定义控件库]简单的表单布局控件
1. WPF布局一个表单 <Grid Width="400" HorizontalAlignment="Center" VerticalAlignment ...
- 详解Ajax请求(三)——jQuery对Ajax的实现及serialize()函数对于表单域控件参数提交的使用技巧
原生的Ajax对于异步请求的实现并不好用,特别是不同的浏览器对于Ajax的实现并不完全相同,这就意味着你使用原生的Ajax做异步请求要兼顾浏览器的兼容性问题,对于java程序员来讲这是比较头疼的事情, ...
- jeecg表单页面控件权限设置(请先看官方教程,如果能看懂就不用看这里了)
只是把看了官方教程后,觉得不清楚地方补充说明一下: 1. 2. 3. 4.用"jeecgDemoController.do?addorupdate"这个路径测试,不出意外现在应该可 ...
- HTML之表单类控件、图像类元素的CSS特别样式汇总
前言 记录下开发过程中一些特殊表单控件(input.textarea.select等)的样式控制 input 取消光标聚焦时,输入框的外延边框 input:focus{ outline:none } ...
- WdatePicker 开始日期不能大于结束日期,结束时间不能小于开始时间
<input class="input_calendar inputcss" id="startDate" runat="server" ...
- JaveWeb 公司项目(6)----- 通过ToolTip给控件添加动态注释
现在公司的项目进展到了视屏这一块,关于海康网页端的构建我会另外写一篇博客来详细讲解,这一篇的博文主要讲的是我刚刚遇到的一个小问题 连接上了视屏之后,将控制按钮换成图标,方位按钮比较好理解,调焦调距的按 ...
- Asp,Net里的Form表单
1.Form表单是页面与Web服务器交互过程中最重要的信息来源. 2.<form action="传到哪个页面的网站地址" method="post和get 两种方 ...
随机推荐
- 关于transition回调函数的几种写法
平时工作中经常遇到需要transition动画结束后触发某个功能的问题,但是在映像中好像只见过animate的回调函数, 而transition的很多属性无法在animate中使用,经过一些总结归纳, ...
- centos 7 搭建本地yum仓库
首先需要创建一个目录 mkdir /1 #在根目录下创建一个名字为1的目录 将光盘挂载到创建的这个目录 mount /dev/cdrom /1 yum命令配置文件在/etc/yum.repos.d ...
- 李洪强漫谈iOS开发[C语言-047]-数列求和
// // main.c // 53 - 数列求和 - 李洪强 // // Created by vic fan on 16/10/15. // Copyright © 2016年 李洪强. ...
- JAVA中序列化和反序列化
一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失(java回收机制)但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运 ...
- C# 安装和卸载 Windows Service
特别注意: 安装Window Service 的时候,一定要用管理员打开命令提示符(cmd) 1. 创建Windows Service 服务项目 2. Service设计界面:右键-->选择安装 ...
- strcat、strcpy、memcpy 的使用注意
char *p = "hello";//5 个长度 ; //char *str = (char *)malloc(sizeof(char)*len); ] = "niha ...
- 20145337实验四Android开发基础
20145337实验四Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事件处 ...
- 【转】解决jsp参数传递乱码的问题
解决jsp参数传递乱码的问题 计算机生于美国,英语是他的母语,而英语以外的其它语言对他来说都是外语.他跟我们一样,不管外语掌握到什么程度,也不会像母语那样使用得那么好,时常也会出一些“拼写错误”问题. ...
- IOS第15天(1,事件处理View的拖拽)
*******view 一些方法 #import "HMView.h" @implementation HMView // 一个完整的触摸过程 // touchesBegan -& ...
- jquery 同id使用指针寻找具体每个id的值
this来判断<script language="javascript"> function t(obj) { alert(obj.value); } </scr ...