Struts2中的类型转换器学习(升级版)

来源:互联网 发布:网络工作模式有哪些 编辑:程序博客网 时间:2024/06/05 17:17

原理

原理和我的另外一篇相同的一样。(此次是局部类型转换,全局请看另外一篇)

继承StrutsTypeConverter….之后重写方法

主要文件有以下:Convert.java、UserAction-conversion.properties、UserAction.java、User.java、type.jsp

解释:
UserAction.java 是测试用的Aciton

UserAction-conversion.properties是配置要转换类型的参数

Convert.java 是类型转换的核心

不多说,直接代码:

Convert.java

package cn.type;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;public class Convert extends StrutsTypeConverter{    @Override    public Object convertFromString(Map arg0, String[] arg1, Class arg2) {        // TODO Auto-generated method stub        System.out.print("类型转换器开启...date:");        if(arg1==null||arg2==null){            return null;        }        if(Date.class!=arg2){            return null;        }        System.out.println(arg1[0]+"class:"+arg2.toString());        SimpleDateFormat sdf =null;        Date date=null;        /*         * 定义 Date类型数据能够转换的几种类型。         * yyyyMMdd必须要写全,如19860210         *          */        /*         *          * 类型转换器开启...date:2016-07-02class:class java.util.Date            usernmae: xiaoming            password:             date: 2015-12-7 0:00:00         */        String[] parse = new String[]{"yyyy-MM-dd","yyyy,MM,dd","yyyy/MM/dd","yyyyMMdd"};        for(String p :parse){            for(String str : arg1){                if(str!=null){                    sdf= new SimpleDateFormat(p);                    try {                        date = sdf.parse(str);                        return date;                    } catch (Exception e) {                        // TODO: handle exception                        continue;                    }                }            }        }        return null;    }    @Override    public String convertToString(Map arg0, Object arg1) {        // TODO Auto-generated method stub        return null;    }}

UserAction-conversion.properties

user.date=cn.type.Convert

UserAction.java

package cn.type;import java.util.Map;import cn.entity.User;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.opensymphony.xwork2.util.ValueStack;public class UserAction extends ActionSupport {    private User user = new User();    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public String login(){        //值栈! 此是传入root根元素中。        ValueStack vs = ActionContext.getContext().getValueStack();        vs.set("username", user.getUsername()+" root");         System.out.println("usernmae: "+user.getUsername());        System.out.println("password: "+user.getPassword());        System.out.println("date: "+user.getDate().toLocaleString());        return "login";    }    public String register(){        System.out.println("usernmae: "+user.getUsername());        System.out.println("password: "+user.getPassword());        System.out.println("date: "+user.getDate().toLocaleString());           return "debug";    }}

User.java

package cn.entity;import java.util.Date;public class User {    private String username;    private String password;    private Date date;    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 Date getDate() {        return date;    }    public void setDate(Date date) {        this.date = date;    }}

type.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>My JSP 'model.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>  <body>  <h3>类型转换</h3>  <p>类型转换的原理是:xml方式配合代码。代码继承StrutsTypeConverter</p>    <form action="type_v1_loginAction" method="post">        用户名:<input name="user.username" type="text"/><s:fielderror /><br/>        密码:<input name="user.password" type="password"><s:fielderror fieldName="password"/><br/>        日期:<input name="user.date" type="text"/><s:fielderror fieldName="date"/><br/>        <input type="submit" value="提交"/>    </form><br>    <br/>    El:{username:${username}}<br/>    ognl:{root:<s:property value="username"/>、map栈:<s:property value="#request.username"/>}<br/>  </body></html>

Struts.xml

        <!-- 类型转换 -->        <action name="type_v1_*Action" class="cn.type.UserAction" method="{1}">            <result name="success">/success.jsp</result>            <result name="input">/type.jsp</result>            <result name="login">/type.jsp</result>            <result name="debug">/inpue.jsp</result>        </action>
0 0
原创粉丝点击