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 .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
* 要转换为的目标类型
*/
@Overridepublic Object convertFromString(Map context, String[] values, Class toclass) {// TODO Auto-generated method stubif(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 blocke.printStackTrace();}}return null;}@Overridepublic String convertToString(Map arg0, Object arg1) {// TODO Auto-generated method stubreturn 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""/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""/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""/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>
如果觉得《java struts xml文件设置----自定义日期转换器(局部 及全局类型转换器类)》对你有帮助,请点赞、收藏,并留下你的观点哦!