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>