为什么进行类型转换

在基于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>

最新文章

  1. Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
  2. 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送
  3. HTML5 模拟现实物理效果,感受 Web 技术魅力
  4. Tomcat中取消断点
  5. ESP8266例程
  6. ubuntu下php xdebug的安装(配置)
  7. 解决Win7中第一次HttpWebRequest连接缓慢、超时等问题
  8. BSP模型
  9. powerdesigner设置mysql唯一键,非主键
  10. 怎么查看mysql执行过的sql。
  11. ListView中加入Button后,Button的点击事件和ListView的点击事件冲突
  12. c# 动态产生控件 注册动态控件事件
  13. C#文件下载(适用于各个浏览器)
  14. 【机器学习】--EM算法从初识到应用
  15. Linux高级运维 第二章 Linux基本操作和自己动手组装服务器
  16. Rest分页接口开发
  17. wordpress安装插件和主题
  18. C语言典型编程3
  19. ckeditor使用说明
  20. MySQL : ERROR 1042 (HY000): Can&#39;t get hostname for your address

热门文章

  1. element-ui表格点击一行展开
  2. fuzzy commitment 和fuzzy vault
  3. Linux 常用命令:开发调试篇
  4. BCZM : 1.6
  5. Android 开发 框架系列 OkHttp拦截器
  6. vue中axios使用封装
  7. Http学习(二)
  8. (转)小白科普, netty 有啥用?
  9. visual studio 注释模板
  10. Linux 容器 vs 虚拟机——谁更胜一筹