重要重要:以后一定要导对包,到错了一个包纠结了一天重点内容

一、Struts2中有自带类型转换器也有自定义类型转换器

  1)比如表单提交的信息有 用户名,生日, 年龄, Action中对应的数据类型分别
  是 String, Date, int.没什么好说的, Struts2会自动完成.

  2)Struts2内建了常用的类型转换器,如String ,boolean,char,int,long,float,double,Date, 数组
  (假定元素是String类型),
  集合(假定元素是String类型,用ArrayList封装)

实现自定义类型转换器
  1) 实现TypeCoverter接口,或者继承DefaultTypeConverter实现类
  (该类实现了TypeCoverter接口),通过继承该实现类来实现自己的
  类型转换器。重写convertValue方法即可。

  为了简化类型转换器的实现,Struts2提供了一个StrutsTypeConverter抽
  象类,这个抽象类是DefaultConverter的子类。实现了方法,并提供了2个
  不同转换方向的方法:
  Object convertToString(Map context,String[] values,Class toClass)和String convertFromString(Map context,Object o)
  二、实现自定义转换器
  1)Action类 ConversionAction.java

package com.app.action;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class ConversionAction extends ActionSupport{private static final long serialVersionUID = 1L;private int age;private Date birthday;public ConversionAction() {System.out.println("执行。。");}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String execute(){System.out.println("执行了");System.out.println("age: "+age);System.out.println("birthday: "+birthday);return "success";}}

2)实现转换的转换器类DateConverter.java

package com.app.action;import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.opensymphony.xwork2.conversion.TypeConversionException;public class DateConverter extends StrutsTypeConverter {private final DateFormat[] dfs={new SimpleDateFormat("yyyy年MM月dd日"),new SimpleDateFormat("yyyy-MM-dd"),new SimpleDateFormat("yyyy/MM/dd"),new SimpleDateFormat("yyyy.MM.dd")};//把字符串转化为对象public Object convertFromString(Map context, String[] values, Class toClass) {System.out.println("转换中。。。");//获取日期的字符串String dateStr=values[0];System.out.println("输出日期了");System.out.println(dateStr);//遍历格式日期,进行转化for(int i=0;i<dfs.length;i++){try {return dfs[i].parse(dateStr);} catch (Exception e) {continue;}}//若没有转换成功 则抛出异常throw new TypeConversionException();}@Overridepublic String convertToString(Map context, Object object) {System.out.println("输出结果啊");Date date=(Date)object;System.out.println("date: "+date);System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));return new SimpleDateFormat("yyyy-MM-dd").format(date);//转换失败返回null}}

3)简单页面1.jsp和success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><s:form action="testConversion" theme="simple">Age: <s:textfield name="age" label="Age"></s:textfield>${fieldErrors.age[0] }^<s:fielderror fieldName="age"></s:fielderror><br><br>Birth: <s:textfield name="birthday"></s:textfield><s:fielderror fieldName="birthday"></s:fielderror><br><br><s:submit></s:submit></s:form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>Age: <s:property value="age"/><br><br>Birth: <s:property value="birthday"/><br><br></body>
</html>

4)配置文件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><!-- 设置用户界面主题,默认值为xhtml风格 -->
<constant value="simple" name="struts.ui.theme"/><!-- 中文乱码 -->
<constant value="utf-8" name="struts.i18n.encoding"/><package name="test" extends="struts-default" namespace="/"><action name="testConversion" class="com.app.action.ConversionAction"><result name="success">/success.jsp</result><result name="input">/index.jsp</result></action>
</package></struts>

5)Action类与转换器类匹配文件
Conversion-Action-conversion.properties

birthday=com.app.action.DateConverter#java.util.Date=com.app.action.DateConverter

Struts2自定义类型转换器相关推荐

  1. Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证

    一.自定义类型转换器 1.编写一个类,继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 2.覆盖掉其中的public Obj ...

  2. Struts2下创建自定义类型转换器(表单中日期的处理)

    在表单提交中需要有日期的输入,默认的Struts2处理机制可能不能满足需求,需要自定义一下类型转换器.如: String----->java.util.Date:输入 java.util.Dat ...

  3. struts2教程:12、自定义类型转换器

    自定义类型转换器 有两种:1.局部.2.全局 java.util.Date类型的属性可以接收格式为2009-07-20的请求参数值.但如果我们需要接收格式为20091221的请求参数,我们必须定义类型 ...

  4. Struts2自定义的转换器

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://www.itivy.com/java/archive/2012/3/6/6346664752875153 ...

  5. springmvc二十一:自定义类型转换器

    ConversionService:是一个接口; 它里面有一个Converter(转换器)进行工作 ①实现一个Converter接口,写一个自定义的类型转换器 ②Converter是Conversio ...

  6. 自定义类型转换器代码编写

    package com.learn.utils;import org.springframework.core.convert.converter.Converter;import java.text ...

  7. struts2学习笔记之十一:struts2的类型转换器

    Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转 ...

  8. SpringMVC框架----SpringMVC的自定义类型转换器

    上一段我们介绍了请求参数的绑定 SpringMVC请求参数的绑定 在请求参数绑定的时候,有时候会遇到一些问题,如自定义类型转换器异常 1.自定义类型转换器演示异常 现在有一个页面,想给服务器提交数据, ...

  9. springboot中mongodb自定义类型转换器

    文章目录 1 场景 1.1 BigDecimal写入mongo 1.2 人工转换 1.3 自定义转换器 2 版本 3 步骤 3.1 定义转换器 3.2 配置mongoDb工厂类 3.3 加载自定义转换 ...

最新文章

  1. tanh relu可视化
  2. 一台机器上运行多个ActiveMq
  3. linux系统下cpu如何测试,Linux 系统下如何查看CPU个数
  4. R语言与概率统计(四) 判别分析(分类)
  5. c++ 字符串赋给另一个_7.2 C++字符串处理函数
  6. ncbi查找目的基因序列_NCBI gene: 基因相关信息查询
  7. 基本排序看这篇就够了
  8. 《计算机操作系统》学习笔记(三)---存储器管理
  9. c语言getchar的作用,c=getchar()!='\n'到底什么用呢
  10. NMEA-0183 协议简介
  11. 有关于图片压缩大小--尺寸裁剪 和 压缩系数
  12. 去掉WPS智能生成目录中的空白行
  13. INDEX REBUILD和INDEX REORGANIZE和UPDATE STATISTICS是否涉及Sch-M的案例分析
  14. Springboot面试杀手锏-自动配置原理
  15. apple pay 技术_如何在手机上设置Apple Pay和Google电子钱包
  16. Git - GitWeb
  17. android用对话框捕捉异常,Android - 在捕获异常时在doinbackground期间显示警报对话框...
  18. srttrail txt无法开机_srttrail.txt怎么修复
  19. 【高等代数】第一章:多项式部分【1】
  20. samba服务器在linux下如何运行共享

热门文章

  1. obd 与服务器 通讯协议,经典   OBD-2是什么及接口针脚定义和通信协议
  2. 从塞上明珠到科创新城 榆林数字经济的“速度与激情”
  3. 统计cassandra单表数据量
  4. import pymysql
  5. 蓝桥杯练习----数字三角形,Cowboys,Beaver's Calculator
  6. 移动直播初露锋芒,能否成为社交的下一个风口?
  7. windows cmd cd进入目录无效
  8. mongodb查询一个字段所有值
  9. 怎么在php中加入换行符,如何在PHP中创建换行符?
  10. AIOT产业技术全景结构-数字化架构设计(8)