一、学习案例:通过在输入页面(input.jsp)用同一个输入框同时输入用户名和密码,通过类型转换器在输出页面(output.jsp)分别输出用户名和密码。 二、 a)类型转换是发生在页面数据提交之后,Action接收之前的。 b)对于8个原生数据类型以及Date,String。struts2都能自动转换。所以我们只有在某些特定需求的情况下才会用到。 c)类型转换器,一听这个名字,我们首先会想到得有这么个类(没想到的等明天再想吧,继续看)。所以我们先创建一个名为UserConverter的类。当它继承StrutsTypeConverter之后,这就是个类型转换器。也不继承DefaultTypeConverter,不过不推荐。StrutsTypeConverter的父类就是DefaultTypeConverter,所以推荐使用StrutsTypeConverter。 d)StrutsTypeConverter把逻辑语句分为了convertFromString和convertToString,重写即可。前者是前台到后台,后者是从后台向前台转换。 - @Override8 q5 V- L, f4 K, b
- public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
! ~" w/ Z) [! e7 J6 s+ b1 K - String str = arg1[0];
) C4 j9 ~: C, w7 n3 B: r+ w* D* d - StringTokenizer token = new StringTokenizer(str, ";");
/ a: ?: _& h( c* M. r9 s - String username = token.nextToken();/ M4 D1 {) x5 G9 b
- String password = token.nextToken();
7 O6 l' G; R# t - User user = new User();- F9 Q0 w9 j/ _( @
- user.setUsername(username);
8 c' J7 h: C* h: N. Y - user.setPassword(password);
3 |1 M4 `) C0 M, p% {% K - return user;, \2 j, Y, k9 p5 Y
- }% Q4 u. s/ x5 H( p' t- E9 D* u* G
- , S8 k% y5 `8 \8 E9 W# X; S
- @Override
: n7 p6 d' L% L5 a; F3 A1 N - public String convertToString(Map arg0, Object arg1) {6 C8 z6 X* l4 [- }5 A3 \
- User user = (User)arg1;
! o- S3 C8 v6 @/ q1 f - String str = "username="+user.getUsername()+" password="+user.getPassword();
! H( N; M, a: z8 L3 Y* O5 L' q - return str;
5 F) V4 X1 e( h; y2 w' G" B$ } - }' y, G- S2 f v0 Z- R
复制代码
e)类型转换器有了,struts2怎么才能知道我们重写了呢,换句话就是struts2怎么知道有UserConverter的存在呢?所以我们要在UserAction中配置连接文件,即:UserAction-conversion.properties,UserAction同action名称相同,后面是官方规定,必须这么写。内容为action中用到的属性名和转换器。 代码:user=com.almostman.converter.UserConverter。 这样当前台传输数据到action时,会先检测属性名user是否使用类型转换器,如果使用则启动类型转换器。这样类型转换器才能正常运行。 . N% m% t8 F& W: X$ r Q
三、经验之谈: a) 不要钻牛角尖,比如说某些同学对一些没必要的,相关性不大的问题死扣到底。有时候实在搞不清的问题,就放放,在以后如果越到同类问题,很容易就能解决。原因就是初学者一些专业知识积累的不够,当知识积累到一定程度,像这些专业性的问题,一看就能够明白。 b) 类型转换器其实在实际项目开发中用到的不是特别大。反正在我开发自己网站的一年时间里是没怎么用到,只是有些地方的日期格式控制能用到。 c) 学软件开发这一行,不要思维定式。更不要用感情的思维方式去解决问题,我们开发面对的是 机器,用的是机器语言,我们应该学会用机器的思维方式去解决问题。比如类型转换,我们在设计表单页面时,完全可通过页面设计上的优势杜绝使用类型转换。好比,日期输入,我们完全可以用插件代替,不让人工输入。 4 N# }, j7 x+ t$ k$ x% _* @
四、案例项目:http://download.csdn.net/detail/u011638419/8173841 5 E( _6 t- i1 x. ~: ~1 B. j6 d7 t
五、每日一乐: 一天我和同事一起值班,聊了一会天。 结果他想起一点事,要出去。 我看同事要走,说:“哎哎哎,别走啊,再吹会牛B呗。” 他什么也没说,走到我的面前。 对着我的耳朵,轻轻的吹了一口气,头也不回的走了! 5 {( }6 g* B* N( L# ], N
J; C- ]. \! S+ ^" h
|