Struts2 学习笔记20 类型转换part2 写自己的转换器
之前说的是调用Struts2的默认转换器,现在我们来说以下写自己的转换器,这个一般不常用,在访问不是自己写的类中可能用到。我们一点点来,因为写自己的转换器需要注意的东西还是很多的。
我们还是用之前的项目,新建一个Point,Point对象有xy属性没有set()方法,尽管我们可以用p.x来访问,现在我们不这样传递参数,我们传进来http://localhost:8080/Struts2_3700_type_conversion/test?p=2,3,这时候我们就要用到自己的转换器了。
我先把转换器贴出来看一看。
MyPointConverter.java
package com.tfj.converter; import java.awt.Point; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class MyPointConverter extends DefaultTypeConverter{ @Override
public Object convertValue(Object value, Class toType) {
if(toType==Point.class){
Point p = new Point();
String[] strs = (String[]) value;
String[] xy = strs[0].split(",");
p.x=Integer.parseInt(xy[0]);
p.y=Integer.parseInt(xy[1]);
return p; }
if(toType==String.class){
value.toString();
} return super.convertValue(value, toType);
} }
一会儿我们再来看转化器的实现,在用自己的转换器之前还需要注册,一般呢有三种注册方式。
1.action注册
提供如下格式的文件
文件名: ActionName-conversion.properties
内容:多个propertyName(属性名)=类型转换器类(含包名),如 p=com.tfj.converter.MyPointConverter
存放位置:和ActionName类相同路径。
2.全局注册
提供如下格式的文件
文件名: xwork-conversion.properties
内容: 多个“复合类型=对应类型转换器”项组成,如 java.awt.Point=com.tfj.converter.MyPointConverter
存放位置:WEB-INF/classes/目录下。
3.使用 JDK1.5 的注释来注册转换器。
接下来来说下转换器的实现,其实是传进来2,3先调用split()方法把它用“,”分割,再把“2”赋值给p.x,“3”赋值给p.y就可以了。(在注册的时候.properties文件的名字是固定的)。
Struts2 学习笔记20 类型转换part2 写自己的转换器的更多相关文章
- Struts2 学习笔记 11 Result part2
之前学习了result type 和global result 我们现在来说一下 1.Dynamic Result动态结果集.先来看一下小项目的目录 首页的两个链接访问user/user?type=1 ...
- [Struts2学习笔记] -- 自定义类型转换
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- Struts2 学习笔记19 类型转换 Part1
现在来说一说类型转换,提到类型转换其实我们之前早已经用过了,在url传递参数的时候,我们传递过来的参数其实都是String类型的,在显示的时候都自动转换了,像这种简单的转换很好理解,我们要说的是,转换 ...
- Struts2学习笔记(七)——类型转换
1.自动类型转换 Struts2内部提供大量类型转换器,用来完成数据类型转换问题: String和boolean.Boolean:完成字符串与布尔值之间的转换 String和char.Characte ...
- Struts2学习笔记⑧
今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)
TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...
- Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel ...
- Struts2学习笔记①
Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...
随机推荐
- 深度解析Linux通过日志反查入侵
有一个朋友的服务器发现有入侵的痕迹后来处理解决但是由于对方把日志都清理了无疑给排查工作增加了许多难度.刚好手里有些资料我就整理整理贴出来分享一下.其实日志的作用是非常大的.学会使用通过日志来排查解决我 ...
- OpenCV学习 2:播放AVI视频
原创文章,欢迎转载,转载请注明出处 第二个程序,播放视频.用opencv做起来是如此的简单..哈哈. 学Opencv,只是为了在它的基础上实现工程应用,而它里面高深的理论我等屌丝只 ...
- Python中进行Base64编码和解码
Base64编码 广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容 ...
- android jar 第三方包
工程交叉了,做相互引用 1.单纯的代码jar 不引用res http://terryblog.blog.51cto.com/1764499/564558 1.2.连带源码一起打包出来 http:// ...
- 你是否决绝平庸,你有勇气来学C/C++吗,有勇气来检验你是否经得起世界五百强的面试
如果你来传智播客学习 你的目标就是要积累工作经验 有机会参加世界五百强的面试 秒杀世界五百强的面试 赢得高薪的offer! C/C++课程大纲 C语言3周21天 完全掌握C语言的本质,成为一名合 ...
- 链表-Reverse Linked List
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * } ...
- sql server 规则
1.规则的创建 create rule rule_no1 as @e_salary>500 2.把自定义规则绑定到列 exec sp_bindrule 'rule_no1','employee. ...
- hadoop 配置文件注意问题
一定要配置成hostname形式: 如伪分布:配成localhost:9000 完全分布:配成big1:9000
- GCD的使用和面试题集锦
GCD 分为异步和同步 异步: dispatch_async ( 参数1 , { } 同步: dispatch_sync( 参数1 , { } 参数1 :队列 队列分为两种: dispatch_get ...
- atan(正切函数)
atan函数:返回数值的余切值 原型:double atan(double x) <pre name="code" class="cpp">#inc ...