Struts2自定义类型转换.doc

Similar documents
新・解きながら学ぶJava

EJB-Programming-4-cn.doc

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

EJB-Programming-3.PDF

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

拦截器(Interceptor)的学习

untitled

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

1.5招募说明书(草案)

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

Microsoft Word - 梁斌言:2016年度全省职业教育工作会议总结讲话提纲.doc

中 共 广 元 市 食 品 药 品 监 督 管 理 局 党 组 2016 年 机 关 党 的 工 作 要 点 2016 年 是 实 施 十 三 五 规 划 的 开 局 之 年, 是 推 进 全 面 从 严 治 党 的 深 化 之 年, 是 决 胜 脱 贫 攻 坚 的 关 键 之 年 机 关 党 的

“秦火火”玩“火”自焚

简 讯 : 庐 江 县 气 象 监 测 预 警 中 心 主 体 结 构 顺 利 封 顶 肥 西 县 政 府 出 台 乡 镇 气 象 工 作 目 标 管 理 考 核 细 则 庐 江 县 组 织 召 开 乡 镇 气 象 灾 害 防 御 工 作 会 议 长 丰 县 局 积 极 组 织 开 展 无 偿 献

2013年全国农村妇女科学素质网络竞赛活动总结

目 录 第 1 章 毕 业 生 就 业 基 本 情 况 沈 阳 化 工 大 学 科 亚 学 院 概 况 毕 业 生 规 模 毕 业 生 结 构 毕 业 生 院 系 分 布 毕 业 生 专 业 分 布

0卷首语.FIT)

版块一 研究生学长对《自然地理学》科目的总结

北 京 化 工 大 学 2014 年 毕 业 生 就 业 质 量 年 度 报 告 高 校 毕 业 生 就 业 工 作 是 教 育 领 域 重 要 的 民 生 工 程, 涉 及 人 民 群 众 切 身 利 益, 关 乎 社 会 和 谐 稳 定 北 京 化 工 大 学 高 度 重 视 毕 业 生 就 业

2014年9月月讯

( 一 ) 毕 业 生 规 模 和 就 业 率 浙 江 警 察 学 院 2014 届 毕 业 生 共 计 542 人, 均 为 本 科 毕 业 生, 其 中 浙 江 省 内 生 源 毕 业 生 516 人, 西 藏 自 治 区 生 源 毕 业 生 26 人 截 至 2014 年 12 月 10 日,

1

就业质量报告工作方案

内 蒙 古 大 学 创 建 于 1957 年, 是 新 中 国 成 立 后 党 和 国 家 在 少 数 民 族 地 区 创 建 最 早 的 综 合 大 学 学 校 1962 年 招 收 研 究 生,1978 年 被 确 定 为 全 国 重 点 大 学,1984 年 获 博 士 学 位 授 权,199

目 录 学 校 概 况... 1 报 告 说 明... 1 第 一 章 毕 业 生 就 业 基 本 情 况... 2 一 毕 业 生 的 觃 模 和 结 构... 2 ( 一 ) 毕 业 生 的 觃 模... 2 ( 二 ) 毕 业 生 结 构... 2 二 就 业 率... 4 ( 一 ) 总 体

目 录 学 校 概 况... 1 报 告 说 明... 1 第 一 章 毕 业 生 就 业 基 本 情 况... 3 一 毕 业 生 的 规 模 和 结 构... 3 ( 一 ) 毕 业 生 的 规 模... 3 ( 二 ) 毕 业 生 结 构... 4 二 就 业 率... 5 ( 一 ) 总 体

南昌职~1

的 通 知 (30) 安 阳 市 人 民 政 府 办 公 室 关 于 印 发 代 市 长 王 新 伟 在 市 长 办 公 会 议 上 讲 话 的 通 知 (33) 大 事 记 安 阳 市 人 民 政 府 大 事 记 (2015 年 11 月 ) (38) 安 阳 市 人 民 政 府 大 事 记 (2

关于成立化学化工学院石油炼制系和应用化学系的通知

<4D F736F F D C4EAD6D0BFBCD3EFCEC4C6C0BCDBD6B8C4CFA3A8B6A8B8E5A3A92E646F63>

中机质协[2016]2

前 言 厦 门 南 洋 职 业 学 院 是 经 福 建 省 人 民 政 府 批 准 正 式 设 立 国 家 教 育 部 备 案 具 有 独 立 颁 发 国 家 承 认 学 历 文 凭 资 格 的 全 日 制 综 合 性 普 通 高 等 院 校, 由 海 内 外 热 心 教 育 的 十 五 位 学 者

目 录

Microsoft Word 职业规划与就业指导正文.doc

Microsoft Word - 会行党_2016_3号.doc

和 工 作 格 局 遵 循 公 正 公 开 便 民 原 则, 建 立 完 善 了 信 息 公 开 的 工 作 制 度 和 工 作 规 范 : 制 订 出 台 了 青 岛 农 业 大 学 信 息 公 开 实 施 细 则 ( 试 行 ), 明 确 了 信 息 公 开 的 内 容 公 开 途 径 和 要

标题

党 建 学 校 党 委 副 书 记 副 校 长 陈 锐 出 席 离 退 休 党 支 部 书 记 座 谈 会 4 月 22 日 下 午, 离 退 休 干 部 工 作 处 在 胜 利 楼 会 议 室 召 开 党 支 部 书 记 座 谈 会 学 校 党 委 副 书 记 副 校 长 陈 锐 出 席 会 议,

令行立即行 上马就扬蹄

一 指 导 思 想 全 面 贯 彻 党 的 十 八 大 和 十 八 届 三 中 四 中 五 中 全 会 精 神, 深 入 学 习 习 近 平 总 书 记 系 列 重 要 讲 话 精 神, 按 照 中 央 和 上 级 政 法 公 安 机 关 关 于 加 强 队 伍 建 设 的 有 关 要 求, 聚 焦

BT-15

国 培 计 划 (2011) 义 务 教 育 骨 干 教 师 远 程 培 训 项 目 骨 干 培 训 者 培 训 工 作 总 结 全 国 中 小 学 教 师 继 续 教 育 网 ( 以 下 简 称 继 教 网 ) 在 国 培 计 划 (2011) 义 务 教 育 骨 干 教 师 远 程 培 训 项

绝版亲情

取 企 业 一 套 表 平 台 收 集 汇 总 整 理 和 提 供 有 关 调 查 的 统 计 数 据, 综 合 整 理 和 提 供 旅 游 科 技 教 育 文 化 卫 生 体 育 社 会 保 障 公 用 事 业 等 全 区 性 基 本 统 计 数 据 6 组 织 实 施 基 本 单 位 能 源 投

Administrator

< C4EAD0C2CEC5B1A8B5C0CCE2C2BC>

标题

有 两 室, 外 加 一 个 很 小 的 房 间 和 一 个 小 厨 房 不 过 在 当 时 的 湖 边 坊, 这 就 相 当 于 一 幢 高 级 别 墅, 非 常 引 人 注 目 和 招 人 嫉 妒 姨 妈 和 姨 父 共 有 三 个 儿 子 和 一 个 女 儿 老 大 夏 天 强 比 我 大 7

金 山 区 青 年 创 新 创 业 示 范 区 的 建 议 进 行 专 门 答 复 朱 波 委 员 提 出, 创 新 创 业 的 主 体 是 青 年, 要 集 聚 教 育 科 研 人 才 资 本 等 各 类 资 源 和 优 势, 加 快 建 设 青 年 创 新 创 业 示 范 区, 在 政 策 体

趋 61 中 国 必 须 创 新 新 教 育 价 值 观 刘 道 玉 64 学 校 常 规 管 理 的 常 与 新 李 瑾 瑜 69 教 育 就 要 宽 柔 养 育 王 立 志 目 录 阅 读 72 全 民 阅 读 应 成 为 国 家 战 略 朱 永 新 77 一 世 读 书 抵 封 侯 陈 先 达

Microsoft Word - 第三期简报1.doc

山东体育学院

标题

目 录 学 校 概 况... 1 报 告 说 明... 2 第 一 章 毕 业 生 就 业 基 本 情 况... 3 一 毕 业 生 基 本 情 况... 3 ( 一 ) 本 与 科 毕 业 生 人 数 不 比 例... 3 ( 二 ) 各 系 毕 业 生 人 数 分 布... 3 ( 三 ) 毕

标题

专业特色、实施过程和效果说明


吉林师范大学博达学院

综合练习与检测八下.tpf

要 惧 让 的 血 族 亲 王 夜 冥 昊 一 座 华 丽 而 又 古 老 的 城 堡 坐 落 在 一 个 开 满 血 色 彼 岸 花 的 地 方, 城 堡 内, 看 不 见 任 何 东 西, 只 能 感 受 到 置 身 在 黑 暗 之 中 那 种 诡 异, 恐 惧 的 气 氛, 这 里 很 黑,

目 录 一 概 况... 3 二 针 对 2015 届 毕 业 生 开 展 的 就 业 工 作... 5 三 2015 届 毕 业 生 就 业 情 况 抽 样 调 查 分 析 ( 一 ) 用 人 单 位 类 型 情 况 ( 二 ) 专 业 对 口 率 ( 三 )

項目詳情書

Guava学习之Resources

Microsoft Word - 01.DOC

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

无类继承.key

标题

Hadoop&Spark解决二次排序问题(Hadoop篇)

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

软件工程文档编制

Chapter 9: Objects and Classes

JavaIO.PDF

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

extend

JBuilder Weblogic

IoC容器和Dependency Injection模式.doc


chp6.ppt

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

untitled

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

《大话设计模式》第一章

三种方法实现Hadoop(MapReduce)全局排序(1)

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

untitled

Chapter 9: Objects and Classes

Microsoft Word - Learn Objective-C.doc

J2EE MVC with Webwork2 Xwork, to J2EE MVC with Webwork2 Xwork

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

Transcription:

Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter, 由于 StrutsTypeConverter 提供了更好的封装, 所以建议大家在写转换器时通常 采用继承 StrutsTypeConverter 方式来实现. StrutsTypeConverter 类实质上是 DefaultTypeConverter 的扩展 public abstract class StrutsTypeConverter extends DefaultTypeConverter { StrutsTypeConverter 中的两个核心方法 public abstract Object convertfromstring(map context, String[] values, Class toclass); public abstract String converttostring(map context, Object o); convertfromstring 方法用于从前台页面获取字符串, 将字符串转化为对象 converttostring 方法用于将对象以字符串的方式输出到页面 我们在写 struts2 自定义类型转换类的时候主要就是覆盖上面两个方法 分类 struts2 自定义类型转换从大的方面来讲分两种 : u 局部类型转换

u 全局类型转换局部类型转换又分为三种 : 普通实体 bean 的自定义类型转换 基于领域模型的自定义类型转换 基于模型驱动的自定义类型转换无论是全局类型转换还是局部类型转换, 转换器与 Action 之间是用 properties 文件来关联的,properties 文件指明了转换规则全局类型转换规则 : 在 classpath 下新建文件 xwork-conversion.properties( 固定名称 ) 其内容为 : 目标转换对象 = 转换器类 ( 包名 + 类名 ) 局部类型转换规则 : 在对应的 Action 的同级目录下新建 Action 名 -conversion.properties( 一定要与 Action 类名对应 ) 其内容为 : 目标转换对象 = 转换器类 ( 包名 + 类名 ) 在局部类型转换中又存在一种特殊情况基于领域模型的自定义类型转换它不但要在对应的 Action 的同级目录下新建 Action 名 -conversion.properties( 一定要与 Action 类名对应 ) 文件, 还需在引用模型同级目录下建 properties 文件取名规则为引用名 - conversion.properties 这块不好用文字描述, 举个列子 : 需求是这样的 : 在 User 类中有个 Point 对象的引用, 现在要基于 Point 来做自定义类型转换, 这里 Point 与 User 之间的这层关系就叫做领域模型, 在操作 User 时需要对 Point 进行自定义类型转换, 这时就必须在 User 类的同级目录下新建 User-conversion.properties 文件, 在文件中指明 point 对象需要用什么类来进行转换. 我们约定 Point 类的对象名就为 point, 而对应的转换类为 com.dl.convertor.pointconvertor, 对应的 Action 类为 PointUserAtion, PointUserAtion 中有一个 User 类型的属性名为 user 那么在 PointUserAtion 的同级目录中会存在一个名为 User-conversion.properties 内容应该是这样的 PointUserAtion-conversion.properties 的文件其内容为 : user.point= com.dl.convertor.pointconvertor // 因为在 Action 中引用的对象名为 user 而现在要处理的是 user 中的 point 属性, 所以这里需要使用 user.point 来指明 同样在 User 类的同级目录会存在一个名为 User-conversion.properties 的文件内容为 // 因为该文件只针对 user, 所以只需指明 User 中的 point 对象即可不需在添 加 user 否则会出现预想不到的结果

针对局部类型转换三种情况的例子 普通实体 bean 类型转换 实体 bean(point) * 普通的 javabean 封装坐标 public class Point { private int x; private int y; 对应的 Action(PointAction) public class PointAction extends ActionSupport{ private Point point; public String execute() throws Exception { return super.execute(); 对应的转换类 (PointConvertor) public class PointConvertor extends StrutsTypeConverter{ * 从表单中的 string 到 Point 对象 * 我们约定以, 来分隔这里为了严谨期间最好要进行输入数据的验证 public Object convertfromstring(map context, String[] str, Class c) { Point point=null;

if(str!=null str.length>0){ String[] s=str[0].split(","); point=new Point(); int x=integer.parseint(s[0]); int y=integer.parseint(s[1]); point.setx(x); point.sety(y); * 从对象到字符串 * 比如页面输出 public String converttostring(map context, Object o) { Point point=(point)o; return "("+point.getx()+","+point.gety()+")"; 需要做的配置 : 在 PointAction 的同级目录下新建 PointAction-conversion.properties, 文件内容为 # 目标转换对象 = 转换器 领域模型自定义类型转换 实体 bean(point,user) public class User { private String name; private Point point;

public class Point { private int x; private int y; 对应的 Action(PointAction) public class UserAction extends ActionSupport{ private User user; public String execute() throws Exception { return super.execute(); 对应的转换类 (PointConvertor) public class PointConvertor extends StrutsTypeConverter{ * 从表单中的 string 到 Point 对象 * 我们约定以, 来分隔这里为了严谨期间最好要进行输入数据的验证 public Object convertfromstring(map context, String[] str, Class c) { Point point=null; if(str!=null str.length>0){ String[] s=str[0].split(","); point=new Point(); int x=integer.parseint(s[0]); int y=integer.parseint(s[1]); point.setx(x); point.sety(y);

* 从对象到字符串 * 比如页面输出 public String converttostring(map context, Object o) { Point point=(point)o; return "("+point.getx()+","+point.gety()+")"; 需要做的配置 : 在 UserAction 的同级目录下新建 UserAction-conversion.properties, 文件内容为 # 目标转换对象 = 转换器 user. 在 User 的同级目录下新建 User-conversion.properties, 文件内容为 模型驱动自定义类型转换 实体 bean(point) * 普通的 javabean 封装坐标 public class Point { private int x; private int y; 对应的 Action(PointModelDrivenAction)

* 基于模型驱动的自定义类型转换 * @author Administrator * @SuppressWarnings("serial") public class PointModelDrivenAction extends ActionSupport implements ModelDriven<Point>{ private Point point; public Point getpoint() { public void setpoint(point point) { this.point = point; public Point getmodel() { public String execute() throws Exception { return super.execute(); 注 : 这里切记要生成 point 的 set get 方法要不值不能自动进行封装 对应的转换类 (PointConvertor) public class PointConvertor extends StrutsTypeConverter{ * 从表单中的 string 到 Point 对象 * 我们约定以, 来分隔这里为了严谨期间最好要进行输入数据的验证 public Object convertfromstring(map context, String[] str, Class c) {

Point point=null; if(str!=null str.length>0){ String[] s=str[0].split(","); point=new Point(); int x=integer.parseint(s[0]); int y=integer.parseint(s[1]); point.setx(x); point.sety(y); * 从对象到字符串 * 比如页面输出 public String converttostring(map context, Object o) { Point point=(point)o; return "("+point.getx()+","+point.gety()+")"; 需要做的配置 : 在 PointModelDrivenAction 的同级目录下新建 PointModelDrivenAction-conversion.properties, 文件内容为 # 目标转换对象 = 转换器 在 User 的同级目录下新建 User-conversion.properties, 文件内容为 至此 Struts2 的自定义类型转换你基本已经掌握了, 还不赶紧动手练练. 遇到什么问题, 请及时遇我联系 QQ:184675420 Blog: http://www.blogjava.net/sxyx2008/ Email:sxyx2008@gmail.com demo 下载 :http://www.blogjava.net/files/sxyx2008/struts2typeconvertor.zip