层层递进Struts1(六)自定义转换器

Struts提供的类型转换有限,如果我们强行使用没有的类型转换,则会出现错误,以Date类型为例:

org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception  

java.lang.IllegalArgumentException: Cannot invoke 

com.tgb.struts1.TypeCovertActionForm.setUtilDate - argument type mismatch

在此我们来建立 java.util.Date的转换器。

Servlet版    Converter

数据转换器,代码如下:

package com.tgb.struts1;  

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

import org.apache.commons.beanutils.ConversionException;  

import com.sun.org.apache.commons.beanutils.Converter;  

public class UtilDateConverter implements org.apache.commons.beanutils.Converter {  

    public Object convert(Class type, Object value) {  

        if (value instanceof Date) {
            return (value);
        }
        Date date=null;
    if (value instanceof String) {
        try {
            date=new SimpleDateFormat("yyy-MM-dd").parse((String)value);
        } catch (Exception e) {
            e.printStackTrace();
        }
        }
    return date;
    }
}

Servlet

为的是将上面的转换器注册到ConvertUtils中:

package 

com.tgb.struts1;  

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;  

import org.apache.commons.beanutils.ConvertUtils;  

public class UtilServlet extends HttpServlet {  

    public void init()throws ServletException
    {
            ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
    }
}

配置文件

在web.xml中添加配置,因为转换器在Tomcat启动之时就加载,所以此处要将 load-on-startup设置为大于0的值:

<servlet>
        <servlet-name>UtilServlet</servlet-name>
        <servlet-class>com.tgb.struts1.UtilServlet</servlet-class>
        <load-on-startup>10</load-on-startup>
  </servlet>

测试

jsp

<h4>测试struts的转换器</h4>
<form action="typeconvert.do" method="post" >
    int value:<input type="text"  name="intValue" /> <br/>
    double value:<input type="text"  name="doubleValue" /> <br/>
    boolean value:<input type="text"  name="booleanvVlue" /> <br/>
    java.sql.date:<input type="text"  name="sqlDate" /> <br/>
    java.util.date:<input type="text"  name="utilDate" /> <br/>
    <input type="submit"  value="提交" /> <br/>
</form>

结果

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, struts
, apache
, struts1
, import
, value
, struts1 测试
转换器
struts2自定义转换器、初中层层递进语文答案、层层递进、层层递进初中历史答案、形容层层递进的成语,以便于您获取更多的相关知识。

时间: 2024-10-03 20:39:01

层层递进Struts1(六)自定义转换器的相关文章

层层递进Struts1(三)之Struts组成

这篇博客我们来说一下Struts的主要组成我们,通过前几篇博客,我们知道这个框架最重要的几个步骤: 获取路径.封装表单.获取转向列表.转向逻辑处理.转向,与此对应的是:ActionServlet.ActionForm. ActionMapping.Action.ActionForward. ActionServlet 这个在上篇博客已经说明,可以访 问< 预加载ActionServlet>. ActionForm ActionForm的主要作用是对表单数据进行封装,这 个.NET开发中的实体类

层层递进Struts1(七)详解DispatchAction

通过前面几篇博客,不知道大家有没有发现这个问题,虽然现在可以灵活控制跳转了,但是Action的数量 还是比较多,如何既能保证跳转灵活,还能减少Action的数量?这就是我们这篇博客所说的DispatchAction, 如其名,可以理解为"分发式Action",使用它可以避免为每个Action创建一个类. 我们先来看一下 实例. UserAction DispatchAction继承的是Action,它的特点就是把以前的多个Action合并为 一个,当多个Action关联较大时,可以像这

层层递进Struts1(五)之处理流程

这篇博客我们深入Struts框架执行部分源码,从ActionServlet的process函数开始,看一下其内在的执行 过程. 流程图 以下流程图展示的是ActionServlet和RequestProcessor两个类用到的函数,如RequestProcessor调用的 其它类的函数不再说明. 函数说明 我们选择几个重要的函数说明,其它函数则简单说明一下即可. ActionServlet process /** * <p>Perform the standard request proces

层层递进Struts1(四)之预加载ActionServlet

Struts的执行相当于分为两个阶段,预加载阶段和执行阶段,预加载阶段是指在Tomcat启动之时就开始执 行的内容,而此时我们并未真正进入跳转逻辑,这篇博客我们来分析一下预加载阶段. 配置文件 还记得web.xml中关于Struts的Servlet是如何配置的吗? <servlet- name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-c

层层递进Struts1(二)之Struts1简介及登录实例

上篇博客由Servlet的几个版本的例子,引出在页面跳转控制方面要解决的问题,在文章最后提到了 Struts1,这篇文章目的是解释一下什么是Struts1,及如何使用的问题. 什么是Struts1 说一 下我的理解:它符合MVC思想,使用Java二次开发封装的一个框架,主要简化.解决页面请求分发.跳转的问 题.Stuts1的优点是使用了丰富的配置文件使得灵活性大大提高:因为已经封装成框架,使得缩短了开发时间 .提高了开发效率,同时适量使用抽象,使得代码冗余减低.文件冗余减少,维护更加简单. St

层层递进Struts1(一)之由Servlet引入Struts

在说Struts1之前,我们先来使用Servlet编写一个程序从而了解Struts产生原因和用途:一个简单的增删 改查,我们来看一下使用Servlet是如何实现的,为了形象说明,我们从最基本的开始写,然后逐步递进. 第一版 这一版我们使用最常规的做法,增删改查每个功能都使用自己的Servlet,内容如下: 文件树 index.jsp <form action="servlet/AddUserServlet" method="post"> 姓名:<i

层层递进Struts1(八)之总结

先来看一下Struts1学习总结的思维导图,画的主要是Struts1中的重点和博客分布,如下所示: 系列博客的侧重点是: Struts1是什么? 为什么要使用它? 如何使用Struts1? Struts1源码分析 ? 总结 学完后综合看来,所谓的Struts1框架,实际是利用java已存在的函数二次封装所得,它侧重于解 决MVC中V和部分C的控制问题,较多使用配置文件,很大程度上减少了文件个数和代码重复,使得开发和维护 相对于不使用框架而言要简单的多.当然因为它只是封装和重组Java函数,如果你

WPF 后台banging数据,加入自定义转换器问题

问题描述 首先说明,我是个新人,我想把这个问题分享给和我一样碰到这个问题的新手,大牛看到这里有更好的解决方式,请指出下,谢谢.在wpf技术里,数据绑定,是个很好的功能,网上有很多介绍数据绑定文章,但是大多都是在界面上实现绑定和自定义转换器实现.今天我在这里我在解决后台代码,实现绑定加数据加自定义转换器: 解决方案 解决方案二:在界面上实现绑定和自定义转换器实现->任何在Xaml上实现的功能,在后台都可以实现.建议lz把这些经验写到CSDN博客.

struts2.0-Struts2 自定义转换器无法转换页面object数据

问题描述 Struts2 自定义转换器无法转换页面object数据 测试了下可以转换Double类型,可见转换器配置正确.前台QueryString Parameters 如下 id[materialName]:aaa id[type]:b instockQty:333 costPrice:111 createUser: outstockQty:111 id_1:ss returnQty:222 createDate[nanos]:0 createDate[time]:1453342211000