Struts2.x 学习笔记 之 类型转换器 和 错误提示修改

来源:互联网 发布:iphone视频制作软件 编辑:程序博客网 时间:2024/06/16 01:39

这块感觉学得很模糊,虽然两种类型转换器最后都可以,这次重新开个项目来测试。

先快速开发,之后详解,最后给源码

(1)struts2开发环境搭建起来。

传送门:http://blog.csdn.net/fanfan4569/article/details/52451549

(2)使用错误机制

这里写图片描述
这里写图片描述
这里写图片描述

修改错误信息显示 - 》国际化 传送门:http://blog.csdn.net/fanfan4569/article/details/52576000

这里写图片描述
这里写图片描述

若age输入格式错误,则会显示以下信息:

这里写图片描述


①局部类型转换器

1.1配置文件

需要类型转换的类对应的配置文件,文件名开头需要一致

这里写图片描述
这里写图片描述
这里写图片描述

要点说明:

  1。局部类转换器仅仅对某个Action的属性起作用

  2。birth=com.yyf.converters.DateConverter

  当浏览器提交请求时,请求中的birth请求参数将被该类型转换器处理,即使用convertValue()方法将字符串转换成Date实例

  3。却只能一次使用(对一个Action有效),过于浪费


②全局类型转换器

2.1配置文件

只需配置一个xwork-conversion.properties

这里写图片描述
这里写图片描述
这里写图片描述


源码

LoginAction.java

public class LoginAction extends ActionSupport {    private String username;    private String password;    private int age;    private Date birth;    public Date getBirth() {        return birth;    }    public void setBirth(Date birth) {        this.birth = birth;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String execute() {        System.out.println("age:" + age);        System.out.println("birth:" + birth);        if (getUsername().equals("yyf") && getPassword().equals("123")) {            return SUCCESS;        }        return ERROR;    }}

DateConverter.java

public class DateConverter extends StrutsTypeConverter {    private DateFormat dateFormat;    public DateConverter(){        System.out.println("DateConverter's constructor...");        dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");    }    @Override    public Object convertFromString(Map map, String[] strings, Class aClass) {        System.out.println("converFormString ...");        if(aClass == Date.class){            System.out.println("is Date.class..." );            if(strings != null && strings.length > 0){                String value = strings[0];                System.out.println(value);                try {                    return dateFormat.parseObject(value);                } catch (ParseException e) {                    throw new XWorkException("Could not parse date", e);                }            }        }        //若没有转换成功,则返回values        return strings;    }    @Override    public String convertToString(Map map, Object o) {        System.out.println("convertToString...");        if(o instanceof Date){            Date date = (Date)o;            return dateFormat.format(date);        }        return null;    }}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <package name="action" extends="struts-default">        <action name="login" class="com.yyf.action.LoginAction">            <result name="input">/LoginForm.jsp</result>            <result name="error">/WEB-INF/content/error.jsp</result>            <result name="success">/WEB-INF/content/success.jsp</result>        </action>    </package></struts>
0 0
原创粉丝点击