项目里有些不同页面间的日期显示格式是不同的,

第一个问题:

比如我用日期控件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取日期数据格式转换成标准日期格式的问题的更多相关文章

  1. 【ASP.NET 基础】表单和控件

    1.HTML表单的提交方式 对于一个普通HTML表单来说,它有两个重要的属性:action 和 method.action属性指明当前表单提交之后由哪个程序来处理,这个处理程序可以是任何动态网页或者 ...

  2. My97DatePicker日期控件,开始时间不能大于结束时间,结束时间不能小于开始时间

    在只做项目的时候,需要用到一个日期控件,之前用到过my97,感觉挺好的,兼容性很强,配置也比较容易 当开始时间不能大于结束时间和结束时间不能小于开始时间,这个需要一个判定的,要不然不就乱套了 在my9 ...

  3. [WPF自定义控件库]简单的表单布局控件

    1. WPF布局一个表单 <Grid Width="400" HorizontalAlignment="Center" VerticalAlignment ...

  4. 详解Ajax请求(三)——jQuery对Ajax的实现及serialize()函数对于表单域控件参数提交的使用技巧

    原生的Ajax对于异步请求的实现并不好用,特别是不同的浏览器对于Ajax的实现并不完全相同,这就意味着你使用原生的Ajax做异步请求要兼顾浏览器的兼容性问题,对于java程序员来讲这是比较头疼的事情, ...

  5. jeecg表单页面控件权限设置(请先看官方教程,如果能看懂就不用看这里了)

    只是把看了官方教程后,觉得不清楚地方补充说明一下: 1. 2. 3. 4.用"jeecgDemoController.do?addorupdate"这个路径测试,不出意外现在应该可 ...

  6. HTML之表单类控件、图像类元素的CSS特别样式汇总

    前言 记录下开发过程中一些特殊表单控件(input.textarea.select等)的样式控制 input 取消光标聚焦时,输入框的外延边框 input:focus{ outline:none } ...

  7. WdatePicker 开始日期不能大于结束日期,结束时间不能小于开始时间

    <input class="input_calendar inputcss" id="startDate" runat="server" ...

  8. JaveWeb 公司项目(6)----- 通过ToolTip给控件添加动态注释

    现在公司的项目进展到了视屏这一块,关于海康网页端的构建我会另外写一篇博客来详细讲解,这一篇的博文主要讲的是我刚刚遇到的一个小问题 连接上了视屏之后,将控制按钮换成图标,方位按钮比较好理解,调焦调距的按 ...

  9. Asp,Net里的Form表单

    1.Form表单是页面与Web服务器交互过程中最重要的信息来源. 2.<form action="传到哪个页面的网站地址" method="post和get 两种方 ...

随机推荐

  1. BZOJ3653: 谈笑风生

    Description 设T 为一棵有根树,我们做如下的定义:• 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道高明到哪里去了”.• 设a 和 b 为 T 中的两个不同节点.如 ...

  2. Java中的try,catch,finally

    讲解的是关于java中关于try.catch.finally中一些问题 下面看一个例子(例1),来讲解java里面中try.catch.finally的处理流程 public class TryCat ...

  3. 【android异步处理】一个关于android异步处理的文章系列

    最近读了Android异步处理系列文章索引,感觉这个文章系列写得不错!可以作为参考

  4. android-Intent and IntentFilter

    一.Intent简介 Android使用Intent来封装程序的调用"意图",Activity.Service.BroadcastReceiver三种重要的组件都是依靠Intent ...

  5. Git基本命令行操作

    A. 新建Git仓库,创建新文件夹git init  B. 添加文件到git索引git add <filename>  --- 单个文件添加git add * --- 全部文件添加 C. ...

  6. OpenGL 小游戏 贪吃蛇1(2D)

    #include "stdafx.h" #include <GL/glut.h> #include <stdlib.h> #pragma comment(l ...

  7. JavaScript 回调函数中的 return false 问题

    今天一个同事问了我一个问题,就是在 Ajax 方法中,请求成功后(success)的回调函数中根据响应的值来判断程序是否继续执行,他不解的是在回调函数中已经 return false 了,但是 Aja ...

  8. vba 工作案例-sheet间拷贝内容

    核心代码就是Copy Destination. Sub copy_data() ' ' copy_data 宏 ' ' Dim fzjgs() As Variant Dim cities As Var ...

  9. json解析jackson ,Gson,等知识总结

    相关资料链接: Java构造和解析json数据的两种方法详解 java解析json Android网络之数据分析---使用Google Gson 解析Json数据 使用jackson在java中处理j ...

  10. rabbimq之流控

    rabbitmq为了能够保证服务器在大量使用资源的情况下正常工作,会做流控. 所谓流控有以下两个方面.一是针对连接做流控,即降低某频率过快的发送消息.二是整体流控,即将所有消费者发送的消息丢掉,悄无声 ...