Struts2自定义类型转换器
来源:互联网 发布:阿里云tv怎么换主页 编辑:程序博客网 时间:2024/06/16 13:25
重要重要:以后一定要导对包,到错了一个包纠结了一天重点内容
一、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(); } @Override public 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自定义类型转换器
- struts2 自定义类型转换器
- struts2自定义类型转换器
- Struts2自定义类型转换器
- Struts2自定义类型转换器
- 自定义Struts2类型转换器
- struts2自定义类型转换器
- struts2 自定义类型转换器
- struts2 自定义类型转换器
- Struts2自定义类型转换器
- struts2自定义类型转换器
- struts2自定义类型转换器
- Struts2自定义类型转换器
- Struts2自定义类型转换器
- struts2 自定义类型转换器
- Struts2自定义类型转换器
- struts2自定义类型转换器
- Struts2自定义类型转换器
- 自定义dialog
- HTML5本地数据库--IndexDB的基本操作
- Struts2中关于"There is no Action mapped for namespace / and action name"的总结
- joomla2.5 MVC剖析
- hdu1131(卡特兰数乘n!)
- Struts2自定义类型转换器
- eclipse快捷键
- php 魔术方法
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest
- PEP8 Python 编码规范整理
- Java并发编程实战(学习笔记二 第三章 对象的共享 上)
- RecycleView根据网络返回的不同类型显示不同布局
- 用c++设计一个不能被继承的类
- linux 系统时间同步