java struts xml文件设置----自定义日期转换器(局部,及全局类型转换器类)

struts转换器API

typeconverter转换器接口---- defaulttypeconverter 默认类型转换器类----- strutstypeconverter用户编写的转换器类,继承此类即可

转换器开发步骤:

1.写转换器类

2.配置转换器类(告诉struts应用自己的转换器类)

    ---》在同包的action目录下,新建一个properties文件

    ---》 命名规则:actionclassname-conversion.properties

            

自定义转换器配置文件   一定要放在action.java 同一个包下  同一个目录下

                       命名方式: action名字+ “-conversion.properties”    

总结:该拦截器负责对错误信息进行拦截 <interceptor name="conversionerror" class="org.apache.struts2 interceptor.strutsconversionerrorinterceptor">

=================================================================================

全局类型转换器类

需要写一个转换器,给所有action用

配置全局类型转换器

          ---》src/xwork-conversion.properties

          ------》内容

                     Java.util.Date=转换器类(cn.itcast.d_type.myconverter)

 全局类型转换器创建步骤:1.在项目src下    新建 xwork-conversion.properties     内容 :Java.util.Date=cn.itcast.d_type.myconverter       //意思是将遇到所有的日期类都按自定义转换器类进行转换

useraction-conversion.properties:

user.birth=cn.itcast.d_type.myconverter

自定义日期转换器:   必须继承 StrutsTypeConverter     重写:convertFromString 或  convertToString

myconverter.java

package cn.itcast.d_type;

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

import org.apache.struts2.util.StrutsTypeConverter;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class myconverter  extends StrutsTypeConverter {
    DateFormat[] df={new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("yyyyMMdd"),
            new SimpleDateFormat("yyyy年MM月dd日")};

/**
* 把String转换为指定的类型 【String To Date】
*
* @param context
* 当前上下文环境
* @param values
* jsp表单提交的字符串的值
* @param toClass
* 要转换为的目标类型
*/


    @Override
    public Object convertFromString(Map context, String[] values, Class toclass) {
        // TODO Auto-generated method stub
        if(values==null || values.length==0){
            return null;
        }
        if(Date.class!=toclass){
            return null;
        }
        for(int i=0;i<df.length;i++){
            
            try {
// 迭代:转换失败继续下一个格式的转换; 转换成功就直接返回
return df[i].parse(values[0]); } catch (java.text.ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } @Override public String convertToString(Map arg0, Object arg1) { // TODO Auto-generated method stub return null; } }

user.java

package cn.itcast.d_type;

import java.util.Date;

public class user {
private  String name;
private String pwd;
private int age;
private Date birth;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPwd() {
    return pwd;
}
public void setPwd(String pwd) {
    this.pwd = pwd;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public Date getBirth() {
    return birth;
}
public void setBirth(Date birth) {
    this.birth = birth;
}

}

useraction.java

public class useraction {

/**    private String name;
    private String pwd;
    private  int  age;
    private Date  birth;
    public  void setName(String name){
        this.name=name;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }
*/
    
    private user user;
    //必须要有getusr方法
public user getUser() {
    return user;
}

public void setUser(user user) {
    this.user = user;
}

public  String register(){
        
            System.out.println(user.getName());
            System.out.println(user.getPwd());
            System.out.println(user.getAge());
            System.out.println(user.getBirth());
        
        
        return "success";
    }
    
    
    
}

同一包名下:cn.itcast.d_type

user.java  --- 实体类      myconverter.java ----- 自定义转换器   , useraction.java  ------处理器  ,  useraction-conversion.properties ----自定义转换器配置信息        

config.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="config" namespace="/" extends="struts-default"   abstract="false">  //标准格式  

<action name="user_*"  class="cn.itcast.d_type.useraction"  method="{1}">
<result name="success"> /index.jsp</result>
</action>

</package>


</struts>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

如果没有该dtd约束语句,会造成 404错误 找不到指定访问的浏览页面



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>

    <!-- 总配置文件:引入其他所有配置文件 -->
    
    
    <include file="cn/itcast/d_type/config.xml"></include>
    
</struts>

web--root:  register.jsp

  <body>
      <form action="${pageContext.request.contextPath }/user_register.action" method="post">
          用户名:<input type="text" name="user.name"><br/>
          密码:<input type="text" name="user.pwd"><br/>
          年龄:<input type="text" name="user.age"><br/>
          生日:<input type="text" name="user.birth"><br/>
          
          <input type="submit" value="注册">
      </form>
  </body>
原文地址:https://www.cnblogs.com/yimian/p/7508886.html