`
frank1998819
  • 浏览: 758454 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

sprng mvc3 日期自动绑定(转)

 
阅读更多

原文  http://blog.csdn.net/whumr1/article/details/8056285

 

使用spring的mvc,直接将页面参数绑定到对象中,对象中有属性为Date时会报错,此时需要处理下。

同样的,其他的需要处理的类型也可以用这种方法。

在controller中加入代码

 

@InitBinder
protected void initBinder(HttpServletRequest request,
                              ServletRequestDataBinder binder) throws Exception {
    //对于需要转换为Date类型的属性,使用DateEditor进行处理
    binder.registerCustomEditor(Date.class, new DateEditor());
}

 

 

 

DateEditor为自定义的处理类,继承自PropertyEditorSupport,处理方法为public void setAsText(String text) throws IllegalArgumentException

 

import org.springframework.util.StringUtils;

import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateEditor extends PropertyEditorSupport {

    private static final DateFormat DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd");
    private static final DateFormat TIMEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    private DateFormat dateFormat;
    private boolean allowEmpty = true;

    public DateEditor() {
    }

    public DateEditor(DateFormat dateFormat) {
        this.dateFormat = dateFormat;
    }

    public DateEditor(DateFormat dateFormat, boolean allowEmpty) {
        this.dateFormat = dateFormat;
        this.allowEmpty = allowEmpty;
    }

    /**
     * Parse the Date from the given text, using the specified DateFormat.
     */
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        if (this.allowEmpty && !StringUtils.hasText(text)) {
            // Treat empty String as null value.
            setValue(null);
        } else {
            try {
                if(this.dateFormat != null)
                    setValue(this.dateFormat.parse(text));
                else {
                    if(text.contains(":"))
                        setValue(TIMEFORMAT.parse(text));
                    else
                        setValue(DATEFORMAT.parse(text));
                }
            } catch (ParseException ex) {
                throw new IllegalArgumentException("Could not parse date: " + ex.getMessage(), ex);
            }
        }
    }

    /**
     * Format the Date as String, using the specified DateFormat.
     */
    @Override
    public String getAsText() {
        Date value = (Date) getValue();
        DateFormat dateFormat = this.dateFormat;
        if(dateFormat == null)
            dateFormat = TIMEFORMAT;
        return (value != null ? dateFormat.format(value) : "");
    }
}

分享到:
评论

相关推荐

    Sprng2.5.6+Hibernate3.6+Struts2.3.16的Jar包

    里面有 Sprng2.5.6+Hibernate3.6+Struts2.3.16的Jar包 已经分好类 但是strut2里面只是包含了最基础的Jar包,其他的按需自己+。 里面还有 jstl标签库的jar 和 数据库MySQL的驱动包 详细配置方法: ...

    Ext Struts2.0 Sprng2.0 Ibatis2.3 例子

    **Struts2** 是一个基于MVC(模型-视图-控制器)设计模式的开源Web应用程序框架,用于简化Java Servlets和JSP(JavaServer Pages)的开发。Struts2提供了强大的拦截器机制,可以处理请求、验证输入、实现事务管理等...

    sprng和struts有什么区别?

    - **持久层解决方案**:Hibernate是一个ORM(Object-Relational Mapping)框架,简化了数据库操作,将对象模型与关系型数据库之间转换的工作自动化。 - **便捷性**:Hibernate提供了简单易用的API,通过方法调用就...

    spring4.0+mybatis3.2+springMvc+easyui1.3.2

    3. **SpringMVC**:作为Spring框架的一部分,SpringMVC是一个模型-视图-控制器(MVC)架构的Web应用框架,它提供了处理HTTP请求、转发控制、视图渲染等功能。SpringMVC与Spring其他模块无缝集成,使得开发者能方便地...

    spring配置 spring配置 spring配置 spring配置 spring配置

    spring配置 spring配置 spring配置 spring配置 spring配置

    Spring+Servlet读取数据库返回JSON数据(源码).zip

    3. 创建一个控制器(Controller),该控制器会调用服务类的方法,将返回的对象集合转换为JSON。 4. 使用Jackson库的`ObjectMapper`类将Java对象序列化为JSON字符串。 5. 在控制器中设置HTTP响应的Content-Type为...

    访问有些网站慢的原因

    3. **服务器位置与距离**:如果服务器距离用户所在地较远,那么数据传输的时间也会增加,从而影响访问速度。尤其是对于国际网站来说,由于国际出口带宽有限,加上长距离传输带来的延迟,访问速度往往不如国内网站。 ...

    Spring 集成 Kafka的配置文件及代码讲解

    在实际项目中,还可以进一步优化配置,如设置消费者的自动提交、错误处理机制等,以满足更复杂的需求。 压缩包中的"Kafka与spring集成的代码"文件应该包含了这些示例的完整实现,供你参考和学习。记得根据实际的...

    spring+springMVC+mybatis+quartz动态定时任务创建

    Spring MVC是Spring框架的一部分,专门用于构建Web应用的模型-视图-控制器(MVC)架构。它简化了处理HTTP请求和响应的过程,通过DispatcherServlet进行请求分发,Controller处理业务逻辑,Model管理数据,View负责...

    Spring5.zip

    Spring运行helloworld所需的三个基础包,分明为com.springsource.org.apache.commons.logging-1.1.1.jar,spring-beans-5.0.2.RELEASE.jar,spring-core-5.0.2.RELEASE.jar

    struts2常量设置详解 struts2常量设置详解

    ##### 3. `struts.i18n.encoding` **描述**:指定Struts2进行国际化资源文件编码格式。 **值**:如`UTF-8`。确保在处理多语言资源时能够正确显示各种字符集的内容,避免乱码问题。 ##### 4. `struts....

    SpringBoot二维码和条形码生成工具包

    3. **配置与集成**:在SpringBoot项目中,这些工具类可以通过Spring的配置文件(application.yml或application.properties)进行配置,例如设置默认的生成目录、文件名格式等。同时,这些工具类可以被设计成Spring的...

    通用权限管理系统

    作用: 1、可以将几个系统的权限都由该系统管理(用户只能管理用户所属组内的角色和权限) 2、可以在此系统框架上开发其他业务逻辑 3、struts2+sprng+hibernate+ajax+html+mysql

    spring-beans-4.3.xsd

    资源配置Sprng.xml的重要文件 看到网上资源很少 就给大家分享一下

    SpringCloud消息总线Bus配置中心实现过程解析

    **3. 安装RabbitMQ** - 下载并安装Erlang运行环境。 - 下载并安装RabbitMQ服务器。 - 启动RabbitMQ,通过默认的管理界面(http://localhost:15672)进行管理,初始用户名和密码均为`guest`。 **4. 添加依赖** 在...

    移动物联网平台的token计算软件

    生成Token时,软件可能采用哈希函数、非对称加密算法(如RSA)或者安全伪随机数生成器(SPRNG)等技术,以确保Token的唯一性和不可预测性。此外,Token通常有有效期限制,过期后需要重新获取,这增加了系统的安全性...

    j2ee通用权限管理系统

    包含源代码,发布文档和系统说明文档 开发环境:1、struts2+sprng+hibernate+ajax+html 2、 将所有sql写在了配置文件来代替dao层,简化了开发,增加了可维护性。

Global site tag (gtag.js) - Google Analytics