600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 原生html5时间组件 JFinal遇到了原生Html5时间组件格式转换问题怎么处理?

原生html5时间组件 JFinal遇到了原生Html5时间组件格式转换问题怎么处理?

时间:2020-04-21 12:36:00

相关推荐

原生html5时间组件 JFinal遇到了原生Html5时间组件格式转换问题怎么处理?

今天JBolt种子用户群里有人提问,JFinal针对原生Html5的日期时间选择组件的格式转换支持有问题,报错。

于是我在JBolt的Demo中加入了这些去测试一下,这里使用的都是原生Html组件。

Input type=“text”默认就是一个简单的单行文本输入框。

如果修改为type=date、datetime-local、time

他们的样式就发生了变化,有选择器出来。

下面这些月和周还好说,直接使用字符串就能接到

比如:04月 后台接收到的是-04

底15周后台接收到的是-W15

这些字符串,存起来怎么解析看你心情,都不是大问题,系统也正常处理。

type="date"的后台使用getData("date")就可以接收到

type="time"的后台并没有getTime("time")提供,可以先使用String接到,然后自己解析数字拼接成java.sql.Time,也可以调用TimeTypeConverter去转。

有问题的是上面这个type="datetime-local"的。

这个既有日期部分,又带着时间部分。

但是我们平时见到的格式都是:-04-25 23:08:38这样的标准格式,但是天不遂人愿,Html5中这个组件提交的值是这种格式:-04-25T23:08。

中间的空格成了一个T,此时我们数据库里定制的字段的类型是datetime类型(mysql)对应java类型的timestamp,对应的converter是TimestampTypeConverter.java

但是这个类里并没有处理这个多余的T,这个问题已经反馈给波总,新版已经增加了这块的兼容处理。

说一下处理方式:

就是在converter里拿到这个带着T的数据,去判断,如果这个数据没有空格 并且同时包含字符'-' 字符'T'字符':',就需要将T字符转换为空格字符。

新版是直接修改的

com.jfinal.core.converter.Converters.java这个类中的

新版还没出来之前,需要自己扩展一下TimestampConverter.java了。mon.config;

importjava.sql.Timestamp;

importjava.text.ParseException;

importjava.text.SimpleDateFormat;

importjava.util.Date;

importcom.jfinal.core.converter.IConverter;

importcom.jfinal.kit.StrKit;

mon.util.DateUtil;

/**

*JBolt中处理timestamp的converter

*特殊处理前端原生Html5的控件inputtype="datetime"

*@ClassName:JBoltTimestampConverter

*@author:JFinal学院-小木QQ:909854136

*@date:4月25日下午9:28:38

*

*/

publicclassJBoltTimestampConverterimplementsIConverter{

privatestaticfinalStringdatePattern="yyyy-MM-dd";

privatestaticfinalintdateLen=datePattern.length();

privatestaticfinalinttimeStampWithoutSecPatternLen="yyyy-MM-ddHH:mm".length();

//mysqltype:timestamp,datetime

@Override

publicjava.sql.Timestampconvert(Strings)throwsParseException{

//增加这一步处理就行了

if(s.indexOf("")==-1&&s.indexOf("-")!=-1&&s.indexOf(":")!=-1&&s.indexOf("T")!=-1){

s=s.replace("T","");

}

if(timeStampWithoutSecPatternLen==s.length()){

s=s+":00";

}

returns;

if(s.length()>dateLen){

returnjava.sql.Timestamp.valueOf(s);

}

else{

returnnewjava.sql.Timestamp(newSimpleDateFormat(datePattern).parse(s).getTime());

}

}

}

OK,这块代码在JFinal的Gitee上 波总已经上传,遇到这个问题的可以暂时使用上面这个类代替。

只需要在JFinalConfig的类中配置配置一下就可以了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。