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

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

362508fe9c9b57e94bc4eb9b6b60ab36.png

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

c47a766e653ad4209e5eb319b85190f5.png

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

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

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

7b54b17f3a2596887bb3934f3ca72723.png

5efe81ae02219d6ef7dad2e0e1a7b986.png

87ee8877bd80006b1f22b92a99bde526.png

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

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

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

6b0c7782494cfc53d82da1a12f271d20.png

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

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

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

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

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

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

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

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

3d234a9e82065e2495c544f6ec6a143b.png

说一下处理方式:

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

新版是直接修改的

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

74d3d73700e7e7690bf8adaa7c096a32.png

1f530aac416911dab8007125f01c8e8a.png

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

import java.sql.Timestamp;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import com.jfinal.core.converter.IConverter;

import com.jfinal.kit.StrKit;

import cn.jbolt.common.util.DateUtil;

/**

* JBolt中处理timestamp的converter

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

* @ClassName:  JBoltTimestampConverter

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

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

*

*/

public class JBoltTimestampConverter implements IConverter {

private static final String datePattern = "yyyy-MM-dd";

private static final int dateLen = datePattern.length();

private static final int timeStampWithoutSecPatternLen = "yyyy-MM-dd HH:mm".length();

// mysql type: timestamp, datetime

@Override

public java.sql.Timestamp convert(String s) throws ParseException {

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

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";

}

return s;

if (s.length() > dateLen) {

return java.sql.Timestamp.valueOf(s);

}

else {

return new java.sql.Timestamp(new SimpleDateFormat(datePattern).parse(s).getTime());

}

}

}

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

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

08056dfbdced5b4ffe9a334d9b9a255e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 2131. 连接两字母单词得到的最长回文串

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words 。words 中每个元素都是一个包含 两个 小写英文字母的单词。 请你从 words 中选择一些元素并按 任意顺序 连接它们,并得到一个 尽可能长的回文串 。每个元素 至多 只能使用一次。 请你返回你能得到的最长…

LeetCode 2132. 用邮票贴满网格图(DP/二维差分)

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。 给你邮票的尺寸为 stampHeight x stampWidth 。我们想将邮票贴进二进制矩阵中,且满足以下…

blue html中转换,BlueFox Free PDF to HTML Converter(PDF文件转换软件)

BlueFox Free PDF to HTML Converter是一款pdf文件转换软件,能直接查看PDF文件和对PDF文件进行编辑,支持批量进行转换,使用非常方便,操作简单,有需要可以下载。软件特色通过将PDF转换为HTML网页,您的网站访…

二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)

定位(position) 1. CSS 布局的三种机制 网页布局的核心 —— 就是用 CSS 来摆放盒子位置。 CSS 提供了 3 种机制来设置盒子的摆放位置,分别是普通流、浮动和定位,其中: 普通流(标准流) 浮动 让盒子从普通流中浮起来 …

LeetCode 2133. 检查是否每一行每一列都包含全部整数

文章目录1. 题目2. 解题1. 题目 对一个大小为 n x n 的矩阵而言,如果其每一行和每一列都包含从 1 到 n 的 全部 整数(含 1 和 n),则认为该矩阵是一个 有效 矩阵。 给你一个大小为 n x n 的整数矩阵 matrix ,请你判断…

上传图片自动加水印html,html5上传多个文件并添加水印 实例源码

【实例简介】【实例截图】【核心代码】html5上传多个文件并添加水印body{font-size:12px;}a{text-decoration:none;}a,a:after{-webkit-transition:all 0.3s;-moz-transition:all 0.3s;transition:all 0.3s;}a.btn i{display:block;width:100%;height:100%;position:relative;z…

LoadRunner培训初级教程

一 LoadRunner简介 1.1 Loadrunner介绍 LoadRunner 是 HP Mercury Interactive用来测试应用程序性能的工具 LoadRunner 通过模拟一个多用户并行工作的环境来对应用程序进行负载测试。通过使用最少的硬件资源,这些虚拟用户提供一致的、可重复并可度量的负载&#xf…

android model 设计,Android model层设计

model层在开发app的过程中,不管是使用了mvp还是mvc甚至mvvm模式,model层的设计基本都是一样的,model层可以被称为数据层,它的主要任务就是为上层提供各种的数据服务,上层完全不需要关心这些数据是来自网络,还是内存&am…

LeetCode 2134. 最少交换次数来组合所有的 1 II(数组*2 + 滑动窗口)

文章目录1. 题目2. 解题1. 题目 交换 定义为选中一个数组中的两个 互不相同 的位置并交换二者的值。 环形 数组是一个数组,可以认为 第一个 元素和 最后一个 元素 相邻 。 给你一个 二进制环形 数组 nums ,返回在 任意位置 将数组中的所有 1 聚集在一…

四、pink老师的学习笔记——元素的显示与隐藏

1. 元素的显示与隐藏 目的 让一个元素在页面中消失或者显示出来 场景 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现! 1.1 display 显示(重点) display 设置或检索对象是否及如…

SpringMVC详解

来源:Sunnier(http://www.admin10000.com/document/6436.html) 一、SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 12345678910111213141…

LeetCode 2135. 统计追加字母可以获得的单词数(位运算+哈希)

文章目录1. 题目2. 解题1. 题目 给你两个下标从 0 开始的字符串数组 startWords 和 targetWords 。每个字符串都仅由 小写英文字母 组成。 对于 targetWords 中的每个字符串,检查是否能够从 startWords 中选出一个字符串,执行一次 转换操作 &#xff0…

五、pink老师的学习笔记——CSS精灵技术(sprite)

5. CSS精灵技术(sprite) 重点 5.1 为什么需要精灵技术 图所示为网页的请求原理图,当用户访问一个网站时,需要向服务器发送请求,网页上的每张图像都要经过一次请求才能展现给用户。 然而,一个网页中往往会应用很多小的…

Javadoc的Html文件传输chm

Javadoc的Html文件转chm 工具下载地址:http://msdn.microsoft.com/en-us/library/ms669985.aspx 两篇相关文章: MyEclipse生成javadoc文档http://blog.csdn.net/kakarot5/article/details/40683837 Java凝视总结http://blog.csd…

六、pink老师学习笔记——CSS三角形之美 margin负值之美文字围绕浮动元素行内块元素布局的巧妙运用

7. 拓展 7.1 margin负值之美 1). 负边距定位:水平垂直居中 咱们前面讲过, 一个绝对定位的盒子, 利用 父级盒子的 50%, 然后 往左(上) 走 自己宽度的一半 ,可以实现盒子水平垂直居中。 2). 压住盒子相邻边框 上图第…

LeetCode 2136. 全部开花的最早一天(贪心)

文章目录1. 题目2. 解题1. 题目 你有 n 枚花的种子。每枚种子必须先种下,才能开始生长、开花。播种需要时间,种子的生长也是如此。给你两个下标从 0 开始的整数数组 plantTime 和 growTime ,每个数组的长度都是 n : plantTime[i…

html悬浮窗口退出,网页中可关闭的漂浮窗口实现

注释部分为广告的左右调节,可以自行设定网页中可关闭的漂浮窗口关闭点击这里,关闭广告!!!var bodyfrm ( document.compatMode.toLowerCase()"css1compat" ) ? document.documentElement : document.body;v…

pycharm profile对函数调用效率进行测试

假设有如下代码: def func1():for i in range(1000):print("i love python")def func2():for i in range(10):print("i love c")func3()def func3():for i in range(100):print("i love java")def main():func1()func2()if __name__…

八、pink老师的学习笔记—— CSS用户界面样式(鼠标样式、轮廓线、防止拖拽文本域)

2. CSS用户界面样式 所谓的界面样式, 就是更改一些用户操作样式,以便提高更好的用户体验。 更改用户的鼠标样式 (滚动条因为兼容性非常差,我们不研究)表单轮廓等。防止表单域拖拽 2.1 鼠标样式cursor 设置或检索在对象上移动的鼠标指针采…

LeetCode 2138. 将字符串拆分为若干长度为 k 的组

文章目录1. 题目2. 解题1. 题目 字符串 s 可以按下述步骤划分为若干长度为 k 的组: 第一组由字符串中的前 k 个字符组成,第二组由接下来的 k 个字符串组成,依此类推。每个字符都能够成为 某一个 组的一部分。对于最后一组,如果字…