如何解决struts2日期类型转换

因此要想保证系统一定要正确第对Date类型进行转换,就要写一个全局的类型转换类,进行Date与String之间的类型转换。

代码如下:

package com.great.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class DateConverter extends DefaultTypeConverter {
    private static final DateFormat[] ACCEPT_DATE_FORMATS = {
            new SimpleDateFormat("dd/MM/yyyy"),
            new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("yyyy/MM/dd") }; //支持转换的日期格式

@Override
    public Object convertValue(Map context, Object value, Class toType) {
        if (toType == Date.class) {  //浏览器向服务器提交时,进行String to Date的转换
            Date date = null;
            String dateString = null;
            String[] params = (String[])value;
            dateString = params[0];//获取日期的字符串
            for (DateFormat format : ACCEPT_DATE_FORMATS) {
                try {
                    return format.parse(dateString);//遍历日期支持格式,进行转换
                } catch(Exception e) {
                    continue;
                }
            }
            return null;
        }
        else if (toType == String.class) {   //服务器向浏览器输出时,进行Date to String的类型转换
            Date date = (Date)value;
            return new SimpleDateFormat("yyyy-MM-dd").format(date);//输出的格式是yyyy-MM-dd
        }

return null;
    }
}

在根目录下创建xwork-conversion.properties文件,并在里面添加下面语句,注册类型转换器
java.util.Date=com.great.util.DateConverter
其中的com.great.util.DateConverter是日期转换类包含命名空间的全称。

然后很多人就大功告成了。

而我还没有成功,系统报错

“ERROR (CommonsLogger.java:27) - Conversion registration error”

“java.lang.ClassNotFoundException: com.great.util.DateConverter”

注册类型转换器没有成功?

仔细一检查发现“java.util.Date=com.great.util.DateConverter”的后面多了一个空格!真相大白了。去掉空格,再次运行,成功!

(0)

相关推荐

  • struts2中类型转换实例代码

    类型转换 所有的页面与控制器传递的数据都是String类型,在对其进行处理时可能会用到各种的数据类型,程序无法自动完成数据类型的转换,这就需要我们在代码中进行手手动操作,这个过程就称为类型转换. 内置类型转换器 在Web应用程序中,用户在视图层输入的数据都是字符串,业务控制层在处理这些数据时,就必须把从视图层传递过来的字符串进行类型转换.Struts2提供了简单易用的数据类型转换机制,struts2提供的类型转换如下: 1)String:将int.long.double.boolean.Stri

  • 关于Struts2的类型转换详解

    一.类型转换的意义 对于一个智能的MVC框架而言,不可避免的需要实现类型转换.因为B/S(浏览器/服务器)结构应用的请求参数是通过浏览器发送到服务器的,这些参数不可能有丰富的数据类型,因此必须在服务器端完成数据类型的转换 MVC框架是一个表现层解决方案,理应提供类型转换的支持,Struts2提供了功能非常强大的类型转换支持. 二.表现层数据的处理 1.对于web应用而言,表现层主要用于与用户交互,包括收集用户输入数据,向用户呈现服务器的状态.因此表现层的数据的流向主要有两个方向:输入数据和输出数

  • Struts2开发 基本配置与类型转换

    一.Action配置中的各项默认值 <package name="csdn" namespace="/test" extends="struts-default">        <action name="helloworld" class="cn.csdn.action.HelloWorldAction" method="execute" > <resu

  • 如何解决struts2日期类型转换

    因此要想保证系统一定要正确第对Date类型进行转换,就要写一个全局的类型转换类,进行Date与String之间的类型转换. 复制代码 代码如下: package com.great.util; import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map; import com.opensymphony.xwork2.conversion.impl.

  • 一篇文章搞定Struts2的类型转换

    前言 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换!下面来看看详细的介绍吧. 一.类型转换的意义 所有的MVC框架,解决的都是表现层的解决方案,都需要收集用户请求参数,并把参数提供给控制器.但是,在Web应用中所有的请求参数都是字符串类型的,Java是强类型的语言,如何将字符串转换为Java类型,这是框架要解决的一个问题. 例如,一个注册页需要输入年龄.日期等.这时候就需要将日期.年龄字符串转换为相应类型. 二.Str

  • 解决easyui日期时间框ie的兼容的问题

    前几天项目进入最后准备上线阶段,测试突然发现使用easyui的datetimebox插件获取的时间在ie的时候无法获取到比当前时间还往后的时间,当时是这么写的: $(selector).datetimebox( { formatter : function(date) { var y = date.getFullYear(); var m = date.getMonth() + 1; var d = date.getDate(); var h = date.getHours(); //获取当前小

  • 解决antd日期选择组件,添加value就无法点击下一年和下一月问题

    原因: 表单监听了关闭事件,执行了setState,若是给closeFloatingLayer增加延时就可看出来antd数据的变化. 解决方法: DatePicker外面套一层div,然后阻止冒泡 补充知识:antd 的 RangePicker 中日期选择近三月 今天遇到一个问题,日期插件中只能选择近三个月.代码如下: 属性中 disabledDate 就是日期禁止选择. 1.当前天之前 2.当前天之后 3.近三月 4.后三月 以上这篇解决antd日期选择组件,添加value就无法点击下一年和下

  • 解决struts2 拦截器修改request的parameters参数失败的问题

    目录 struts2拦截器修改request的parameters参数失败 修改指定拦截器的参数(Struts2) struts2 拦截器修改request的parameters参数失败 为了解决struts2的xss(跨站脚本攻击)问题,我打算用struts2自带的拦截器来过滤所有由request传递来的参数. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo

  • php中日期类型转换实例讲解

    1.使用date()函数将UNIX时间戳转换为日期. 2.使用strtotime()函数将日期转换为UNIX时间戳. 在PHP中是可以完成日期格式转换的,不过有一个缺点就是占用PHP解析器的解析时间,因此速度会相对慢一些.但是这种方式也有优点,那就是不管是不是数据库中查询获得的数据都可以进行转换,转换范围不受限制. 实例 $y=date("Y",time()); //年 $m=date("m",time()); //月 $d=date("d",t

  • 适合新手的mysql日期类型转换实例教程

    目录 1.使用cast() 和 convert() 函数实现日期格式的转换 2.使用date_format()函数实现日期格式的转换 示例1:时间类型转换成字符串类型 示例2:从学生表 ‘student’ 中查询前2人现在的年龄. 3.使用str_to_date()函数实现字符串类型转换日期类型 总结 1.使用cast() 和 convert() 函数实现日期格式的转换 语法格式: convert( 表达式,数据类型 ) cast( 表达式 as 数据类型 ) 可转换的类型有 字符串char.日

  • JS利用Intl解决前端日期和时间的格式化详解

    目录 简介 构造 locales 参数 options 参数 Intl.NumberFormat Intl.DateTimeFormat 简介 Intl 是一个全局对象,它的主要用途就是展示国际化信息,可以将字符串,数字和日期和时间转换为指定地区的格式. 在前端开发中,我们通常会使用第三方库来处理日期和数字的格式化,比如 numeral.dayjs.date-fns 等库,这些库包含了许多的功能,如果我们在项目中仅仅只使用了格式化的功能的话其实是可以不用引入这些库的,JavaScript 自带的

随机推荐