为什么进行类型转换
在基于HTTP协议的Web应用中
客户端请求的所有内容都以文本编码方式传输到服务器端
在基于HTTP协议的Web应用中
客户端请求的所有内容都以文本编码方式传输到服务器端
服务器端的编程语言却有着丰富的数据类型
继承StrutsTypeConverter抽象类
继承org.apache.struts2.util. StrutsTypeConverter类
应用于全局范围的类型转换器
在src目录创建xwork-conversion.properties
转换类全名=类型转换器类全名
应用于特定类的类型转换器
在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件
特定类的属性名=类型转换器类全名
向用户输出类型转换错误的前提条件
启动StrutsConversionErrorInterceptor拦截器
拦截器已经包含在defaultStack拦截器栈中
Action要继承ActionSupport类
其实是要实现ValidationAware接口
配置input结果映射
页面使用Struts 2表单标签或<s:fielderror>标签
Struts 2表单标签内嵌了输出错误信息功能
普通HTML标签需使用<s:fielderror>标签输出转换错误
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:fielderror/>
<s:form action="demo4Action">
<s:textfield name="birthday" label="出生日期"/><br>
<s:textfield name="tel" label="电话号码"/><br>
<s:submit value="submit"/>
</s:form>
</body>
</html>
转换器类:
public class DateConvert extends StrutsTypeConverter {
//将字符串转换为对象类型
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
Date dt=null;
// 获取页面要转换的值
if(arg1[0]!=null&&!"".equals(arg1[0])){
String dateStr =arg1[0];
//封装一个转的目标类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
//将字符串转换为日期
dt= sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
return dt;
}
//将对象转换为页面所需要的类型
public String convertToString(Map arg0, Object arg1) {
String str="";
if(arg1!=null){
if(arg1 instanceof Date){
Date date = (Date)arg1;
//date 对象转换为字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
str = sdf.format(date);
}
}
return str;
}
}
配置文件:
java.util.Date = com.org.converter.util.DateConvert
com.org.entity.Telephone = com.org.converter.util.TelConverter
<?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>
<constant name="struts.devMode" value="false"/>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.custom.i18n.resources" value="abc"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="demo1action" class="com.org.ognl.Demo1Action">
<result>/success.jsp</result>
</action>
<action name="demo3Action" class="com.org.ognl.Demo3Action">
<result name="result">/result.jsp</result>
</action>
</package>
<include file="com/org/converter/action/struts.xml"></include>
</struts>