JSTL标签fmt:formatDate格式化日期出错
异常:
"org.apache.jasper.JasperException: 在 [115] 行处理 [/WEB-INF/jsp/modules/receivedyaccnotify/receive_dy_acc_notify.jsp] 时发生异常"
代码:
<%@ taglib prefix= "fmt" uri= "http://java.sun.com/jsp/jstl/fmt" %>
<td><fmt:formatDate value= "${record.transTime}" pattern= "yyyy-MM-dd HH:mm:ss" type= "date" /></td>
原因:
关于这个异常的详细说明,可以参考【https://blog.csdn.net/lzf_hlh/article/details/81737222】,这次的异常发生的原因是类型转换导致的:即因为${record.transTime}取出来是String类型,无法转换为Date类型。
详解:
从代码中进入【fmt:formatDate】的JSTL源代码中可以发现以下描述(红色字体):
【Date and/or time to be formatted.】:需要转换的value得是Date对象类型
【Name of the exported scoped variable which stores the formatted result as a String.】:返回的值是String类型
1 <tag>
2 <description>
3 Formats a date and/or time using the supplied styles and pattern
4 </description>
5 <name>formatDate</name>
6 <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class>
7 <body-content>empty</body-content>
8 <attribute>
9 <description>
10 Date and/or time to be formatted.
11 </description>
12 <name>value</name>
13 <required>true</required>
14 <rtexprvalue>true</rtexprvalue>
15 </attribute>
16 <attribute>
17 <description>
18 Specifies whether the time, the date, or both
19 the time and date components of the given
20 date are to be formatted.
21 </description>
22 <name>type</name>
23 <required>false</required>
24 <rtexprvalue>true</rtexprvalue>
25 </attribute>
26 <attribute>
27 <description>
28 Predefined formatting style for dates. Follows
29 the semantics defined in class
30 java.text.DateFormat. Applied only
31 when formatting a date or both a date and
32 time (i.e. if type is missing or is equal to
33 "date" or "both"); ignored otherwise.
34 </description>
35 <name>dateStyle</name>
36 <required>false</required>
37 <rtexprvalue>true</rtexprvalue>
38 </attribute>
39 <attribute>
40 <description>
41 Predefined formatting style for times. Follows
42 the semantics defined in class
43 java.text.DateFormat. Applied only
44 when formatting a time or both a date and
45 time (i.e. if type is equal to "time" or "both");
46 ignored otherwise.
47 </description>
48 <name>timeStyle</name>
49 <required>false</required>
50 <rtexprvalue>true</rtexprvalue>
51 </attribute>
52 <attribute>
53 <description>
54 Custom formatting style for dates and times.
55 </description>
56 <name>pattern</name>
57 <required>false</required>
58 <rtexprvalue>true</rtexprvalue>
59 </attribute>
60 <attribute>
61 <description>
62 Time zone in which to represent the formatted
63 time.
64 </description>
65 <name>timeZone</name>
66 <required>false</required>
67 <rtexprvalue>true</rtexprvalue>
68 </attribute>
69 <attribute>
70 <description>
71 Name of the exported scoped variable which
72 stores the formatted result as a String.
73 </description>
74 <name>var</name>
75 <required>false</required>
76 <rtexprvalue>false</rtexprvalue>
77 </attribute>
78 <attribute>
79 <description>
80 Scope of var.
81 </description>
82 <name>scope</name>
83 <required>false</required>
84 <rtexprvalue>false</rtexprvalue>
85 </attribute>
86 </tag>
因为从数据库读取的字段为字符串格式的"20230321165837",通过【fmt:formatDate】转换的时候以致发生异常。
所以在调用之前将所需要转换的项目变成Date类型,那么可以通过【fmt:parseDate】进行转换解析,参考代码如下:
1 <td>
2 <fmt:parseDate value="${record.transTime}" var="trade_Date" pattern="yyyyMMddHHmmss" type="date"/> //yyyyMMddHHmmss见补充说明※1.
3 <fmt:formatDate value="${trade_Date}" pattern="yyyy-MM-dd HH:mm:ss" type="date"/> //yyyy-MM-dd HH:mm:ss见补充说明※2.
4 </td>
补充说明:
※1.关于【yyyyyMMddHHmmss】:与转换的日期字符串的格式一致,否则可能回报【value attribute can not be parsed: "20230321165837"】错误。
示例1:
日期字符串:"20230321165837:
转换格式:"yyyyyMMddHHmmss"
示例2:
日期字符串:"2023/03/21 16:58:37"
转换格式:"yyyy/MM/dd HH:mm:ss"
※2.关于【yyyy-MM-dd HH:mm:ss】:这个可以是任意
※3.关于【fmt:parseDate】的入值与出值的类型说明:
【Date string to be parsed.】:需要转换的value得是日期字符串
【Name of the exported scoped variable in which the parsing result (of type java.util.Date) is stored.】:返回的值是java.util.Date类型
1 <tag>
2 <description>
3 Parses the string representation of a date and/or time
4 </description>
5 <name>parseDate</name>
6 <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class>
7 <body-content>JSP</body-content>
8 <attribute>
9 <description>
10 Date string to be parsed.
11 </description>
12 <name>value</name>
13 <required>false</required>
14 <rtexprvalue>true</rtexprvalue>
15 </attribute>
16 <attribute>
17 <description>
18 Specifies whether the date string in the
19 value attribute is supposed to contain a
20 time, a date, or both.
21 </description>
22 <name>type</name>
23 <required>false</required>
24 <rtexprvalue>true</rtexprvalue>
25 </attribute>
26 <attribute>
27 <description>
28 Predefined formatting style for days
29 which determines how the date
30 component of the date string is to be
31 parsed. Applied only when formatting a
32 date or both a date and time (i.e. if type
33 is missing or is equal to "date" or "both");
34 ignored otherwise.
35 </description>
36 <name>dateStyle</name>
37 <required>false</required>
38 <rtexprvalue>true</rtexprvalue>
39 </attribute>
40 <attribute>
41 <description>
42 Predefined formatting styles for times
43 which determines how the time
44 component in the date string is to be
45 parsed. Applied only when formatting a
46 time or both a date and time (i.e. if type
47 is equal to "time" or "both"); ignored
48 otherwise.
49 </description>
50 <name>timeStyle</name>
51 <required>false</required>
52 <rtexprvalue>true</rtexprvalue>
53 </attribute>
54 <attribute>
55 <description>
56 Custom formatting pattern which
57 determines how the date string is to be
58 parsed.
59 </description>
60 <name>pattern</name>
61 <required>false</required>
62 <rtexprvalue>true</rtexprvalue>
63 </attribute>
64 <attribute>
65 <description>
66 Time zone in which to interpret any time
67 information in the date string.
68 </description>
69 <name>timeZone</name>
70 <required>false</required>
71 <rtexprvalue>true</rtexprvalue>
72 </attribute>
73 <attribute>
74 <description>
75 Locale whose predefined formatting styles
76 for dates and times are to be used during
77 the parse operation, or to which the
78 pattern specified via the pattern
79 attribute (if present) is applied.
80 </description>
81 <name>parseLocale</name>
82 <required>false</required>
83 <rtexprvalue>true</rtexprvalue>
84 </attribute>
85 <attribute>
86 <description>
87 Name of the exported scoped variable in
88 which the parsing result (of type
89 java.util.Date) is stored.
90 </description>
91 <name>var</name>
92 <required>false</required>
93 <rtexprvalue>false</rtexprvalue>
94 </attribute>
95 <attribute>
96 <description>
97 Scope of var.
98 </description>
99 <name>scope</name>
100 <required>false</required>
101 <rtexprvalue>false</rtexprvalue>
102 </attribute>
103 </tag>
JSTL标签fmt:formatDate格式化日期出错的更多相关文章
- JSP标签 <fmt:formatDate>格式化日期
<fmt:formatDate>标签用于使用不同的方式格式化日期. <%@ page language="java" contentType="text ...
- jstl标签的fmt:formatDate格式化日期 String to Date
使用fmt函数需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" ...
- jsp页面格式化时间 fmt:formatDate格式化日期
使用fmt函数需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" ...
- Jsp页显示时间标签JSTL标签 <fmt:formatDate/> 实例大全
<fmt:formatDate value="${isoDate}" type="both"/>2004-5-31 23:59:59 <fmt ...
- 日期格式化标签<fmt:formatDate>&<fmt:setTimeZone>时区标签的使用demo
日期格式化标签<fmt:formatDate>&<fmt:setTimeZone>时区标签的使用demo <%@ page contentType="t ...
- fmt标签把时间戳格式化日期
jsp页面标签格式化日期 <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %> ...
- 在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式
一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.c ...
- formatDate() 格式化日期
function datefmt(milSec, format) { var oldTime = Number(milSec); //得到毫秒数 // 日期格式转换 var t = new Date( ...
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- Java Web程序设计笔记 • 【第10章 JSTL标签库】
全部章节 >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...
随机推荐
- 证书profile 申请
ios 云打包 证书 和密码 在之前的笔记当中已申请好 证书profile 文件申请 登录苹果开放平台 申请前要添加身份,设备,设备那需要填写udid 方法链接https://www.jian ...
- 4组-Beta冲刺-4/5
一.基本情况 队名:摸鲨鱼小队 组长博客:https://www.cnblogs.com/smallgrape/p/15604878.html github链接:https://github.com/ ...
- P77 3.12
#P77 3.12 #一年365天,初始水平值为1.0,每工作一天水平增加N, #不工作时水平不下降,一周连续工作4天,请编写程序运算 #结果并填写表格 n = 1.0 for j in range ...
- grub-mkrescue:错误: `mformat` invocation failed
跟着兴业视频做操作系统的时候遇到了这个问题 解决方法: sudo apt-get install mtools 参考: (40条消息) vs code连接远程Ubuntu编写操作系统,grub-mkr ...
- vue组件传参,父子组件以及兄弟组件(非常详细)
一,父子组件传参. 1.首先在项目目录中新建template文件夹,里边包含父组件:List.vue以及子组件:firstComponent.vue,secondComponent.vue. 2.父组 ...
- CentOS切换gcc
centos默认的gcc版本太老了,有时候需要用新版本的gcc,编译gcc太麻烦可以使用centos提供的scl功能快速切换gcc版本 yum install centos-release-scl y ...
- web后端之过滤器
1直接java搞定 2把@WebFilter()去掉,配置web.xml文件.
- flink 启动job命令
0. 启动flink-session ./bin/yarn-session.sh -n 4 -s 3 -jm 2048 -tm 6144 高版本 bin/yarn-session.sh -d -s 3 ...
- SqlServer 不能收缩 ID 为 %s 的数据库中 ID 为 %s 的文件,因为它正由其他进程收缩或为空。
SQLServer数据库通常都不建议进行SHRINKFILE操作,因为SHRINKFILE不当会造成一定的性能问题. 但是当进行了某些操作(例如某个超大的日志类型表转成分区表切换了数据文件),数据库某 ...
- Assert的使用和简单解释
Assert 的简单使用 Document d = Jsoup.connect("http://www.baidu.com").get(); Assert.notNull(d, & ...