资讯详情

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

今天JBolt有人在种子用户群中提问,JFinal针对原生Html选择组件的格式转换支持有问题,报错。

362508fe9c9b57e94bc4eb9b6b60ab36.png

于是我在JBolt的Demo添加这些测试,这里使用的是原生Html组件。

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

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

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

接下来的几个月和周可以直接用字符串接收

比如:2019年04月 2019-049-04

2019年底15周后台收到2019-W15

如何分析这些字符串并不是什么大问题,系统正常处理。

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

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

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

既有日期,也有时间。

但我们通常看到的格式是:2019-04-25 23:08:38这样的标准格式,但是天不遂人愿,Html该组件在5中提交的值为此格式:2019-04-25T23:08。

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

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

谈谈处理方法:

就是在converter如果带T的数据来判断,如果没有空间 还包括字符'-' 字符'T将T字符转换为空格字符是必要的。

直接修改新版

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

在新版本出来之前,你需要扩展自己TimestampConverter.java了。packagecn.jbolt.common.config;

importjava.sql.Timestamp;

importjava.text.ParseException;

importjava.text.SimpleDateFormat;

importjava.util.Date;

importcom.jfinal.core.converter.IConverter;

importcom.jfinal.kit.StrKit;

importcn.jbolt.common.util.DateUtil;

/**

*JBolt中处理timestamp的converter

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

*@ClassName:JBoltTimestampConverter

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

*@date:2019年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可以配置类中的配置。

标签: 5w15kr电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台