- 浏览: 308947 次
最新评论
-
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
hunanjun000:
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
11.2 内建类型转换器
Struts2内建的类型转换器能处理绝大多数的需求,只有极特殊情况才需要自定义类型转换器。在这一节中就一起来看看Struts2的内建类型转换器都可以完成哪些工作。
11.2.1简单类型
Struts2已经内置了基本数据类型及其包装类和其他一些常见的用于表示数字/日期类型的类型转换器,包括:
- int/Integer:整数型
- short/Short:短整数型
- long/Long:长整型
- float/Float:浮点型
- double/Double:双精度型
- boolean/Boolean:布尔型
- byte/Byte:字节型
- char/Character:字符型
- BigInteger:大整数型
- BigDecimal:大浮点数型
- Date:日期型
11.2.2枚举类型
枚举类型往往被人们忽略,其实Struts2的Action中也可以直接使用枚举类型,其对应的参数值只需要对应枚举定义时的定义名即可。
比如有如下的枚举定义,示例代码如下:
在Action引用的时候,只需传入枚举的定义名(red,blue或green)即可,示例代码如下:
- public class ConverterAction extends ActionSupport {
- private ColorEnum color;
- public ColorEnum getColor() {
- return color;
- }
- public void setColor(ColorEnum color) {
- this.color = color;
- }
- public String execute() throws Exception {
- System.out.println("color="+color);
- System.out.println("传入的颜色是红色吗?答案是 :"+(color==ColorEnum.red));
- return SUCCESS;
- }
- }
其在struts.xml中的定义为:
为了简单,就不去写页面了,直接通过URL来访问,使用get传参的方式,访问的URL为:“http://localhost:9080/helloworld/converterAction.action?color=red”,运行后,后台输出的结果为:
可以看到,使用red作为参数将得到枚举中red的那个枚举值。
11.2.3复合类型
这里提到的复合类型与上一节的简单类型相比,并不是Action的属性的类型变得复杂了,而是操作属性的OGNL变得复杂了,其最终操作的无非还是上面的那些简单类型。
其实,这些东西在第四章的时候都已经提到过了,只不过是在这里再次归纳总结,让大家看到类型转换器的全貌。
1:JavaBean
在Action中定义一个JavaBean属性,那么访问JavaBean中的某一个属性,需要使用Action中JavaBean的属性名.JavaBean中的属性名。
比如有长方形这个JavaBean:
在Action定义一个长方形类型的属性,并提供相应的getter/setter方法,示例代码如下:
需要在提交页面上用<s:textfield name=” rectangle.width”/>来引用Action的rectangle属性的width属性。就相当于调用这个Action的get Rectangle().setWidth()方法。
2:数组和List—简单属性
使用数组和List及其相似,在提交页面上并无区别,在Action中也仅是声明的区别。比如在Action中需要得到提交页面提交的两组身高和体重的数据:
- public class ConverterAction extends ActionSupport {
- private int heights[];
- private List<Integer> weights;
- public int[] getHeights() {
- return heights;
- }
- public void setHeights(int[] heights) {
- this.heights = heights;
- }
- public List<Integer> getWeights() {
- return weights;
- }
- public void setWeights(List<Integer> weights) {
- this.weights = weights;
- }
- //其它的就省略了
- }
对应的提交页面上需要添加:
对应的提交页面上在<s:textfield>的name属性上写不写对应的索引都可以。Action都会正确的获取到用户的输入。
3:数组和List—JavaBean
如果数组或List里面放的是JavaBean,大家不可以掉以轻心,在提交页面上的写法就不那么随便了。
仍然使用上面长方形的JavaBean(里面有width和height两个属性)来做说明,在Action中需要接收一个长方形类型的数组,示例代码如下:
这个时候,如果在提交页面上不用索引:
在Action中得到的就会是四个对象,Struts2并不会把第一个rectangles.height和第一个rectangles.weight凑成一对,放到一个对象里,而是把四个属性都分别放到自己的对象里。
所以,这时候,必须写索引,示例代码如下:
Action中才能正确的接到两个长方形的对象。
4:Map
Map与数组及其类似,同样是用来存放多个“单体”数据,只不过数组用索引来区分不同的单体,而Map用Key来区分所有的单体。可以用“Map名[‘Key值’]”这样的OGNL来引用Map中的值。
在Action中使用Map来存储多个长方形,多个长方形以Key区分:
在提交页面上可以这么写:
Action的map中。
5:小节
这里看到了很多的复合类型:JavaBean、数组或List、Map,这些复合类型之间还可以结合使用。在前面就已经见到了JavaBean数组(Rectangle[] rectangles);Map里面有JavaBean(Map<String, Rectangle>)。反过来JavaBean里面有List或Map,甚至嵌套更多层都是可以的。
虽然看起来会很复杂,但只要牢牢掌握它们各自的访问方式,然后根据情况自由组合就可以了。基本的访问方式为:
- JavaBean:用“.”来访问自己的属性
- 数组或List:用“[索引]”来访问自己的第几个元素
- Map:用“[‘Key’]”来访问自己的键为Key的元素。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4096.html】
欢迎访问http://sishuok.com获取更多内容
发表评论
-
研磨struts2 目录贴
2012-08-24 12:12 163331.1 《研磨struts2》 第一章 Struts2 ... -
跟着cc学设计 之 研磨设计模式 视频教程 出炉了
2012-08-15 07:16 2研磨设计模式——跟着CC学设计系列精品课程,上线了! ... -
研磨struts2 目录
2012-07-30 21:15 2471.1 《研磨struts2》 第一章 Strut ... -
研磨struts2 目录
2012-07-30 16:54 361.1 《研磨struts2》 第一章 Stru ... -
《研磨struts2》A.2 struts.properties的配置 之 A.2.1 概述
2012-07-09 12:10 3055A.2.1 概述 如果我们希望覆盖在 ... -
《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置
2012-07-09 12:10 2710A.1 struts.xml的配置 A.1.1 ... -
《研磨struts2》第二十一章 零配置 之 21.3 通过注解来实现零配置
2012-07-06 08:07 291121.3 通过注解来实现零配置 21.3.1 ... -
《研磨struts2》第二十一章 零配置 之 21.2 约定大于配置
2012-07-05 10:44 245821.2 约定大于配置 21.2.1 约定 ... -
《研磨struts2》第二十一章 零配置 之 21.1 概述
2012-07-05 10:44 231321.1 概述 21.1.1 零配置概述 在 ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.3 整合Struts2与SiteMesh
2012-07-04 08:15 2072在Struts2中使用SiteMesh ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.2 单独使用SiteMesh
2012-07-03 08:00 209120.2 单独使用SiteMesh 20. ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.1 调整应用的风格
2012-07-03 07:59 185520.1 调整应用的风 ... -
《研磨struts2》19.2 使用execAndWait拦截器模拟进度条 之 19.2.1 模拟长时间运行的Action
2012-07-02 12:24 213719.2.1模拟长时间运行的Action ... -
《研磨struts2》第十九章 进度条 之 19.1 使用“进度条”告知用户进度
2012-07-02 12:23 214119.1 使用“进度条”告知用户进度 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.3 Struts2结合JFreeChart
2012-06-28 12:12 199918.3 Struts2结合JFreeChart ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.2 Struts2插件概述
2012-06-28 12:11 2022Struts2并没有求大求全,企图把所有 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.1 JFreeChart使用
2012-06-20 15:48 227818.1 JFreeChart使用 18.1.1概 ... -
研磨struts2(1-10章)电子书下载
2012-06-19 07:30 6058研磨struts2的博客文章 私塾在线学习网 《研 ... -
《研磨struts2》第十七章 防止重复提交 之 17.3 更强大的tokenSession拦截器
2012-06-18 13:46 206917.3 更强大的tokenSession拦截器 ... -
《研磨struts2》第十七章 防止重复提交 之 17.2 使用标签
2012-06-18 13:45 233317.2 使用<s:token/>标签 ...
相关推荐
- **默认转换器**:Struts2内置了一些常用的类型转换器。 - **自定义转换器**:如果内置转换器无法满足需求,可以通过实现TypeConverter接口来自定义转换器。 ### 知识点十一:国际化 #### 11.1 国际化的意义 ...
2. **拦截器(Interceptors)**:Struts2的核心之一是其拦截器机制,它们在Action执行前后执行一系列预定义或自定义的操作。这些拦截器可以用于登录验证、日志记录、性能监控等。源代码中可能包含了不同类型的拦截器...
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
相比于第一代Struts框架,Struts 2提供了更多的功能,如拦截器、动态方法调用、更强大的表单处理机制等,并且它与Spring和Hibernate等其他Java EE技术栈的集成更加紧密。 ### Struts 2的特点 1. **强大的表单处理...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建高效、可扩展且易于维护的Web应用的工具和组件。《研磨Struts2》这本书是专门针对Struts2框架的学习...
研磨Struts2 高清完整版,请和第一部分一起下载啊
11. **Interceptor**:拦截器是Struts2中的另一个重要特性,它们在Action执行前后插入,提供了日志、权限检查、事务控制等功能。拦截器链可以根据需要定制,提高了代码的复用性和可扩展性。 12. **其他重要知识**:...
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式...
8. **化肥的检验**:鉴别化肥时,Ba(OH)2溶液是一种有效的试剂,因为它可以和硫酸盐反应形成硫酸钡沉淀,与铵盐反应产生氨气,从而区分不同类型的化肥。 综上所述,本练习涵盖了化肥的分类、性质、鉴别方法、使用...
第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式...
在现代通信技术中,光纤连接器陶瓷插芯扮演着至关重要的角色,特别是在5G网络的广泛应用背景下。陶瓷插芯由纳米氧化锆制成,这是一种具备高强度和高脆性的特种陶瓷材料。由于其内外径的微小尺寸和严格的形位公差,对...
第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式...