现象&背景:

  异常:

    "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格式化日期出错的更多相关文章

  1. JSP标签 <fmt:formatDate>格式化日期

    <fmt:formatDate>标签用于使用不同的方式格式化日期. <%@ page language="java" contentType="text ...

  2. jstl标签的fmt:formatDate格式化日期 String to Date

    使用fmt函数需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" ...

  3. jsp页面格式化时间 fmt:formatDate格式化日期

    使用fmt函数需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" ...

  4. Jsp页显示时间标签JSTL标签 <fmt:formatDate/> 实例大全

    <fmt:formatDate value="${isoDate}" type="both"/>2004-5-31 23:59:59 <fmt ...

  5. 日期格式化标签<fmt:formatDate>&<fmt:setTimeZone>时区标签的使用demo

    日期格式化标签<fmt:formatDate>&<fmt:setTimeZone>时区标签的使用demo <%@ page contentType="t ...

  6. fmt标签把时间戳格式化日期

    jsp页面标签格式化日期 <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %> ...

  7. 在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式

    一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.c ...

  8. formatDate() 格式化日期

    function datefmt(milSec, format) { var oldTime = Number(milSec); //得到毫秒数 // 日期格式转换 var t = new Date( ...

  9. JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)

    JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <%  Java代码  %>  相当于写在service方法中. <%=java 变量或者表达式 %> ...

  10. Java Web程序设计笔记 • 【第10章 JSTL标签库】

    全部章节   >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...

随机推荐

  1. 浙大版《C语言程序设计(第3版)》题目集 习题3-1 比较大小(10 分)

    本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出,其间以"->"相连. 输入样例 ...

  2. Flink状态后端的对比及机制

    1. Flink状态后端的类型: MemoryStateBackend FsStateBackend RocksDBStateBackend 2. 各状态后端对比: 2.1 MemoryStateBa ...

  3. if判断while循环

  4. linux学习之vi

    vi 删除当前行dd 删除当前行及下面内容 dG 删除第2行到第3行2d 3d 删除指定行,删除第5行  5dd 删除当前行以下3行  d3

  5. linux下opencv contrib安装

    opencv安装 1.1 安装依赖 sudo apt-get update sudo apt-get install build-essential sudo apt-get install cmak ...

  6. PHP判断0和空的方法

    可以兼容,传参数,或者不参数与0的判断   if ( isset($data['other_id']) && (!empty($data['other_id']) || is_nume ...

  7. liunx 目录详解

    /etc/sysconfig/network-scripts/ifcfg-eth0  第一块网卡的配置文件 /etc/sysconfig/network    主机名配置文件 /etc/profile ...

  8. 第一天1h

    //摄氏度和华氏度之间的换算//20211120//ZhangWenjing#include<stdio.h>int main(void){ int f = 0; int c = 0; s ...

  9. 安装Win11需要网络才能下一步怎么跳过

    1.先Shift+F10打开命令提示符 2.运行C:\Windows\System32\oobe\BypassNRO.cmd 3.自动重启来到联网这一步,多了一个没有网络的选项,进入.

  10. Centos7.6操作系统安装

    新建虚拟机 默认下一步 稍后安装操作系统 选择对应的操作系统和版本 指定虚拟机名称和存储位置 处理器配置 内存配置:图形化界面至少2G,字符界面至少1G. 网络类型默认为NAT I/O控制器类型默认L ...