- 浏览: 7254344 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在項目中,需要針對一批数据进行或添加或着修改操作。使用Struts2.0 实现。本人仅使用Web
使用是防止对个对象修改添加时,可能出项空造成部分数据不对应所以进行,进行特殊处理。
(1)首先在 Action 代码中定义了 List 类型变量。并且运用 Java5 中的泛型来表明该 List 集合类型变量中的元素都是 ProductItemPrice对象。当然,也可以在 Action 代码中不使用泛型来标明是何种对象作为 List 集合类型的元素。另一种方法就是示例中写明的在属性文件中指定 List 集合类型的元素是何种对象。
注意:该属性文件属于局部类型转换属性定义文件。文件名要以 ActionName 打头,然后以“ --conversion.properties ”结尾。这表示是对该 Action 中的 List 集合类型指定元素类型。而且该属性文件一定要和 Action 放在同一目录下。否则运行系统时候 Struts2 是不会知道该 Action 的 List 集合类型变量元素是何种类型对象。
( 2 )试设想有一种情况,多个 Action 都需要将某一变量的类型进行转换。此时可以像之前所述使用属性文件来定义被转换类型的变量。但是 1 个 Action 定义 1 个属性文件则太浪费时间。因此 Struts2 中还有个全局类型转换属性定义文件,这样所有需要类型转换的 Action 都可以调用该文件中定义的需要类型转换的变量。全局属性文件名字必须为“ xwork-conversiion.properties ”。文件中定义的内容其实和局部属性文件中大同小异,只是这些被定义的变量可以在所有 Action 中进行类型转换。全局属性文件没必要和具体 Action 代码文件放在一起,只需要放在源代码根目录下即可。也就是说全局属性文件直接放在“ src ”文件夹下即可。
( 3 )在页面输入的 JSP 中,千万不能将 List 集合类型的变量名写错,否则 Action 是得不到具体在页面上输入的值。而且因为是 List 类型,所以可以利用 OGNL 来循环遍历。这样在页面上可依次输入数据。数据显示的 JSP 页面上没有什么特别需要注意的,读者可以看到只是利用 Struts2 的标签来显示这些数据。
( 4 )读者可由图 7.3 、图 7.4 看出,批量的 Material 对象数据输入其实和单个 Material 对象输入本质上没有多大区别。在视图界面上只是利用 OGNL 、 Struts2 标签来保证数据可以输入和显示。在 Action 这一层和普通的 Struts2 的 Action 导航没有多大区别。最重要的是全局和局部类型转换属性文件的定义。让系统明白集合类型中包含的元素是何种对象。不过也请读者不要误解,以为 Set 集合类型转换也是如此。接下来笔者将讲解 Set 集合类型数据类型转换的注意点。
/**
* 可选项产品价格的管理
*
* @author longgangbai
*
*/
@SuppressWarnings("serial")
public class ProductPriceAction extends
BaseAction<ProductItemPrice, ProductItemPriceService>
以上struts2的action采用和SpringSide中设计思路一样:
简述如下:
ProductItemPrice:父类实体
ProductItemPriceService:实体对应的Service层
其中ProductItemPrice有两个子类:
/**
* 可选项关联的价格项
*
* @author longgangbai
*
*/
@Entity
@DiscriminatorValue("MultipleProductItemPrice")
@GenericGenerator(name = "seq_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
@Parameter(name = "sequence_name", value = "seq_MultipleProductItemPrice"),
@Parameter(name = "initial_value", value = "100000") })
public class MultipleProductItemPrice extends ProductItemPrice
和
/**
* 单选项关联的价格项信息
*
* @author longgangbai
*
*/
@Entity
@DiscriminatorValue("SingleProductItemPrice")
@GenericGenerator(name = "seq_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
@Parameter(name = "sequence_name", value = "seq_SingleProductItemPrice"),
@Parameter(name = "initial_value", value = "100000") })
public class SingleProductItemPrice extends ProductItemPrice
特殊处理的地方分为以下几点:
/**
* 查询可选项或单选项的价格的信息
*/
private List<ProductItemPrice> productItemPrices; //仅仅用于展示
/**
* 查询可项的价格的信息
*/
@SuppressWarnings("unchecked")
private List mproductItemPrices; //用于操作可选项操作MultipleProductItemPrice
/**
* 查询多选项的价格的信息
*/
@SuppressWarnings("unchecked")
private List sproductItemPrices;//用于操作可选项操作SingleProductItemPrice
有点怪异的地方:
mproductItemPrices 存储MultipleProductItemPrice 的集合但是不可以泛型有点郁闷
sproductItemPrices存储SingleProductItemPrice 的集合但是不可以泛型有点郁闷
但是如果不存在父子关系可以使用泛型,郁闷吧?^_^
希望有高人指点!!
通过Struts2.0的IOC功能实现注入:
在Struts2.0的Action的局部属性文件内容配置如下:
Action局部配置文件的命名规则:
如下:
Action的名称+“-”+conversion.properties
配置的属性:
Element_集合的名称=集合对象中对应的对象类
Element_productItemPrices=com.unutrip.vacation.model.product.ProductItemPrice
Element_sproductItemPrices=com.unutrip.vacation.model.single.SingleProductItemPrice
Element_mproductItemPrices=com.unutrip.vacation.model.multiple.MultipleProductItemPrice
在展示是的技巧:
重点在针对标签的命名规则
针对可选项集合:MultipleProductItemPrice
便利显示并支持修改如下:
<s:iterator status="sta" value="mproductItemPrices">
<tr id="<s:property value='%{#sta.index+1}'/>">// 目的为动态生成对象做准备
<td>
<s:hidden name="%{'mproductItemPrices['+#sta.index+'].productId'}"/>
<s:hidden name="%{'mproductItemPrices['+#sta.index+'].id'}"/>
<s:property value="%{#sta.index+1}"/>
</td>
<td>
<s:textfield name="%{'mproductItemPrices['+#sta.index+'].startDate'}" size="6" />
</td>
<td>
<s:textfield name="%{'mproductItemPrices['+#sta.index+'].endDate'}" size="6" />
</td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].adultPrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].adultBasePrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].childPrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].childBasePrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].babyPrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].babyBasePrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].adultOfferPrice'}" size="6" /></td>
<td><s:textfield name="%{'mproductItemPrices['+#sta.index+'].childOfferPrice'}" size="6" /></td>
</tr>
</s:iterator>
由于项目支持动态添加所以:
本人经过思考,不得其解,则查看源代码是发现生成静态标签的规则如下:
得到规律如下:
<input type='text' name='mproductItemPrices[0].startDate' size='6'/>
备注其中红色的规律:集合的名称【下标】.属性
最后根据静态标签的规则实现需要的动态添加,并且组成的集合对象的目的
发表评论
-
整合Struts2+JasperReport Web报表应用示例
2013-04-22 13:56 2250整合Struts2+JasperReport Web报表应用 ... -
Struts2+JFreeChart制作图标
2011-11-26 13:52 2047前言 关于Struts2入门以及提高等在这里就不介绍了 ... -
Struts2.0中获取项目的上下文的两种方式
2010-01-19 13:42 3243Struts2.0中获取项目的上下文的两种方式 方 ... -
Struts2.0中通过OGNL访问常量必须注意的一个配置
2010-01-19 13:34 2593在项目的开始阶段,由于没有学习Struts2.0中OGNL的 ... -
Struts2.0 中值栈的实现以及解析OGNL以及值堆栈的原理
2010-01-14 13:19 4629OGNL的值栈实现的堆栈动态OGNL的表达式。何时设置 ... -
关于Struts2.0 标签中采用%{}%的处理原理
2010-01-14 13:08 2661项目中采用struts2.0 ... -
struts 2配置文件解说
2010-01-13 13:09 1370struts 2框架有两个核心配置文件: struts.xml ... -
struts2.0的ognl表达式 研究
2010-01-13 13:05 2612OGNL —— 完美的催化剂 为了解决数据从 ... -
Struts2和OGNL
2010-01-13 10:57 2015OGNL是XWork引入的一个非常有效的数据处 ... -
Struts2参数传递
2010-01-13 10:45 2397本篇主要通过实例来讲述Struts2中各种各样的参数传递。这个 ... -
Struts2.0的不同版本针对枚举转换器应用
2010-01-13 10:39 2808Struts2.0 的Apache项目中从Strut ... -
Struts2.0 中支持的基本数据类的转换的类XWorkBasicConverter的分析
2010-01-13 10:25 4542项目中Struts2.1.6不支持基本数据类型的自动转换, ... -
Struts2.0加載配置順序
2009-12-28 13:33 2475Struts2.0默認的加载顺序: Constants ... -
Struts2.0的IOC方式注入SessionAware, CookiesAware
2009-12-10 19:59 3958在Action实现相应的 private Map<S ... -
Struts2工作原理和框架扩展点
2009-12-08 18:49 3832上图来源于Struts2官方站点,是Struts ... -
Struts2.0 和JQuery實現AjaX的調用功能
2009-11-27 12:47 2324开发过程忽略: 重点注意点解释以下: (1)将Ac ... -
在Struts2.0 中将Enum对象与组件的绑定
2009-08-19 13:05 4120在项目使用一个下拉框绑定或单选或复选框的绑定的应用: ... -
struts2 标签针对字符串截取的处理
2009-06-18 13:16 6154struts2 标签截取字符串的功能 <td> ... -
Struts2中 用OGNL表达式
2009-06-18 12:40 3438具体记录如下:<s:set ... -
struts2的学习(复杂的遍历标签)
2009-06-18 12:36 2355例如我有个此结构的map ...
相关推荐
06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新...
Struts2.0视频教程,struts2.0中文教程,Struts2.0视频教程,struts2.0中文教程,
struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0
在Struts 2.0中实现表单数据校验(Validation) Struts 2的基石——拦截器(Interceptor) 在Struts 2中实现IoC 在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 ...
sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0sstruts2.0 struts2.0
struts2.0jar包 struts2.0包 struts2.0源文件
06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新...
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架
struts 2.0 详细配置 struts 2.0 详细配置 struts 2.0 详细配置
JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0...
此为Struts2.0最新Jar包,方便各位用于Struts2.0的开发.
Struts2.0中文教程Struts2.0中文教程Struts2.0中文教程Struts2.0中文教程Struts2.0中文教程Struts2.0中文教程
清晰的介绍了Struts 2.0框架的工作流程,Action线程安全,程序入口,配置文件。
struts2.0源代码(有关于struts2.0实现上传与下载和如何操作数据库的源代码),非常有用
为Struts 2.0做好准备 Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点: MVC 2模型的使用 功能齐全的标志库(Tag Library) 开放...
struts2.0的特点
struts2.0 入门案例、简单的struts2.0入门案例 2.0配置包,基础