* 从页面中获取对应的内容
        * 在动作类action中,声明与页面中表单name属性的值同名的属性
        * 提供get和set方法
        * struts2框架就会通过反射机制,从页面中获取对应的内容
    * struts2框架不能把页面中获取到的字符串类型转换成任何类型
    * 当struts2框架不能把页面中获取到的字符串类型进行转换时,就需要自定义类型转换器
    * 自定义类型转换器:
        * 要么实现TypeConverter接口或者继承TypeConverter接口的某个实现类,我们继承DefaultTypeConverter类
        * 重写convertValue(Object value, Class toType){}方法
            * 参数"value":要转换的值
            * 参数"toType":要转换的类型
        * 具体代码实现:
            if(value==null){
                return false;
            }
            if(toType==null){
                return false;
            }
            if(toType!=java.util.Date.class){
                return false;
            }
            if(value instanceof java.lang.String[]){
                String [] str = (String[])value;
                if(str[0]!=null&&str[0].length()>0){
                    try {
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
                        return sdf.parse(str[0]);
                    } catch (ParseException e) {
                        /*
                         *  在struts2框架里,自定义的类型转换器,
                         *  如果我们不手动抛出异常,struts2框架只捕获异常,但是并不抛出。
                         *  所以框架就会认为类型转换器转换成功,转向成功页面。
                         */
                        throw new RuntimeException(e);
                    }
                }
            }
        * 两种注册方式:
            * 基于字段的(局部)
                * 在动作类action同目录下,创建一个名为"UserAction-conversion.properties"的资源文件
                    * UserAction为动作类action的名称
                    * "-conversion.properties"是固定写法
                * 其内容配置如下:
                    createTime=cn.swust.converter.DateConverter(字段名=自定义转换器的完整类名)
            * 基于类的(全局)
                * 在src目录下,创建一个名为"xwork-conversion.properties"的资源文件
                    * 该资源文件的名称是固定的
                * 其内容配置如下:
                    java.util.Date=cn.swust.converter.DateConverter
        * 如果在页面中输入一个不正确的值的时候,不手动抛出异常,页面依然转向成功页面
            /*
             *  在struts2框架里,自定义的类型转换器,
             *  如果我们不手动抛出异常,struts2框架只捕获异常,但是并不抛出。
             *  所以框架就会认为类型转换器转换成功,转向成功页面。
             */
        * 配置修改错误提示信息为中文
            * 在动作类action同目录下,创建一个名为"converter.properties"的资源文件
            * 该资源文件配置如下:
                * 针对所有字段:
                    xwork.default.invalid.fieldvalue=类型转换失败 "{0}".
                * 针对某个字段:
                    invalid.fieldvalue.createTime=出生日期转换失败
            * 在struts.xml文件进行配置:
                <constant name="struts.custom.i18n.resources"
                        value="cn.swust.converter.converter">
                </constant>

Struts学习之类型转换的更多相关文章

  1. Struts学习总结-02 类型转换

    一 类型转换 input.jsp <%@ page language="java" import="java.util.*" pageEncoding=& ...

  2. Struts学习总结 学习

    ContextMap 包含值栈包含 root(list结构)和context(map结构)  值栈包含contextMap的引用.  Actioncontext是工具类 可以获取他们 Struts2拥 ...

  3. struts 学习

    1.在Struts2的Action中取得请求参数值的几种方法 public class GetRequestParameterAction extends ActionSupport { privat ...

  4. struts 学习之问一

    今天在进行struts全局类型和局部类型转换时,发现一个问题,如下: 当输入一个点的坐标时,我使用全局转换提示错误,找不到类,当改变成局部类型转换时,可以成功转换,不知道这个是什么原因,难道全局不可以 ...

  5. java struts2入门学习---自定义类型转换

    自定义类型转换器的作用就是将struts无法识别的类型转换成自己所需要的. 比如输入:广东-东莞-虎门,对应的输出时能输出:广东省 东莞市 虎门(镇/区) 这里涉及到的知识点即是将String转换为任 ...

  6. Mybatis源码学习之类型转换(四)

    简述 JDBC数据类型与Java语言中的数据类型并不是完全对应的,所以在PreparedStatement为SQL语句绑定参数时,需要从Java类型转换成JDBC类型,而从结果集中获取数据时,则需要从 ...

  7. mzy,struts学习(一)

    大家都在讲struts已经过时了,现在都是前后台分离,没有必要去学一个淘汰的框架,但是怎么讲呢?我觉得,struts能够流行那么多年,肯定有它的原因,肯定有很多优秀和好的地方,有一个指导过我的人给我讲 ...

  8. struts学习

    1.集成tomcat到eclipse http://www.eclipsetotale.com/tomcatPlugin.html 下载最新的plug后,解压.解压后的文件放到eclipse的plug ...

  9. Struts学习总结-04 上传文件

    1. upload.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...

随机推荐

  1. C# 数据库dataGridView刷新数据和主外键判断

    本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...

  2. SQL整理5

    主键(PRIMARY KEY ) 来自MSDN的描述: 表通常具有包含唯一标识表中每一行的值的一列或一组列.这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性.在创建或修改表时,您可以通过 ...

  3. CentOS添加中科大、163 yum源

    首先备份CentOS-Base.repo [root@richard yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...

  4. C#中的线程(一)入门 转

    文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari,  翻译 Swanky Wu 中文翻译作者把原文放在了& ...

  5. Chrome 常用快捷键

    20160518     生活常识     Chrome常用操作快捷键 掌握Chrome的常用快捷键,不仅可以节约时间,还能够提高工作效率,最主要还可以装逼.以下是一些常用快捷键: 窗口操作快捷键: ...

  6. [C#参考]属性

    属性和字段不同,属性是一个函数成员:它提供灵活的机制来读取.编写或计算某个私有字段的值. 可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法. 这使得可以轻松访问数据,此外还有 ...

  7. Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上

    下载安装软件 下载 Opencv for Windows 最新版本,本文是 Opencv 2.4.8.双击后会出现解压提示,实际上就是“安装”了,路径填写为 D:/Program Files,然后确定 ...

  8. Linux学习之查找命令汇总

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  9. Linux学习之域名解析命令

    (1) /etc/hosts :记录hostname对应的ip地址 /etc/resolv.conf :设置DNS服务器的ip地址 /etc/host.conf :指定域名解析的顺序(是从本地的hos ...

  10. Git 系列(五):三个 Git 图形化工具

    在本文里,我们来了解几个能帮你在日常工作中舒服地用上 Git 的工具. 我是在这许多漂亮界面出来之前学习的 Git,而且我的日常工作经常是基于字符界面的,所以 Git 本身自带的大部分功能已经足够我用 ...