- 浏览: 7339075 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 2289整合Struts2+JasperReport Web报表应用 ... -
Struts2+JFreeChart制作图标
2011-11-26 13:52 2101前言 关于Struts2入门以及提高等在这里就不介绍了 ... -
Struts2.0中获取项目的上下文的两种方式
2010-01-19 13:42 3287Struts2.0中获取项目的上下文的两种方式 方 ... -
Struts2.0中通过OGNL访问常量必须注意的一个配置
2010-01-19 13:34 2629在项目的开始阶段,由于没有学习Struts2.0中OGNL的 ... -
Struts2.0 中值栈的实现以及解析OGNL以及值堆栈的原理
2010-01-14 13:19 4669OGNL的值栈实现的堆栈动态OGNL的表达式。何时设置 ... -
关于Struts2.0 标签中采用%{}%的处理原理
2010-01-14 13:08 2710项目中采用struts2.0 ... -
struts 2配置文件解说
2010-01-13 13:09 1402struts 2框架有两个核心配置文件: struts.xml ... -
struts2.0的ognl表达式 研究
2010-01-13 13:05 2659OGNL —— 完美的催化剂 为了解决数据从 ... -
Struts2和OGNL
2010-01-13 10:57 2066OGNL是XWork引入的一个非常有效的数据处 ... -
Struts2参数传递
2010-01-13 10:45 2445本篇主要通过实例来讲述Struts2中各种各样的参数传递。这个 ... -
Struts2.0的不同版本针对枚举转换器应用
2010-01-13 10:39 2844Struts2.0 的Apache项目中从Strut ... -
Struts2.0 中支持的基本数据类的转换的类XWorkBasicConverter的分析
2010-01-13 10:25 4595项目中Struts2.1.6不支持基本数据类型的自动转换, ... -
Struts2.0加載配置順序
2009-12-28 13:33 2515Struts2.0默認的加载顺序: Constants ... -
Struts2.0的IOC方式注入SessionAware, CookiesAware
2009-12-10 19:59 4002在Action实现相应的 private Map<S ... -
Struts2工作原理和框架扩展点
2009-12-08 18:49 3880上图来源于Struts2官方站点,是Struts ... -
Struts2.0 和JQuery實現AjaX的調用功能
2009-11-27 12:47 2355开发过程忽略: 重点注意点解释以下: (1)将Ac ... -
在Struts2.0 中将Enum对象与组件的绑定
2009-08-19 13:05 4169在项目使用一个下拉框绑定或单选或复选框的绑定的应用: ... -
struts2 标签针对字符串截取的处理
2009-06-18 13:16 6201struts2 标签截取字符串的功能 <td> ... -
Struts2中 用OGNL表达式
2009-06-18 12:40 3481具体记录如下:<s:set ... -
struts2的学习(复杂的遍历标签)
2009-06-18 12:36 2397例如我有个此结构的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是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0视频教程+struts2.0中文教程"包含的资源旨在...
在Struts 2.0中实现表单数据校验(Validation) Struts 2的基石——拦截器(Interceptor) 在Struts 2中实现IoC 在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 ...
在Struts2.0中,核心概念之一是Action,它被设计为一个简单的POJO(Plain Old Java Object),这使得Action的实现更加灵活和简洁。Action类不再需要继承特定的基类,而是通过配置文件(如struts.xml)来定义其行为。...
让我们深入探讨Struts2.0 API的核心概念、关键组件以及它们在实际开发中的应用。 首先,`Struts2.0中文教程.chm`可能包含对框架的详细解释,包括Action、Result、Interceptor等核心概念。Action是Struts2的核心,它...
CRUD(Create、Read、Update、Delete)是数据库操作的基础,Struts2.0通过一系列的Action和视图模板,实现了对数据库数据的增删改查操作。开发者可以基于Struts2.0提供的框架,快速构建出功能完备的数据管理界面。 ...
在Struts 2.0中,你可以看到许多Struts 1.0的改进,以及WebWork框架引入的新特性,这些改进使得Struts 2.0在处理复杂业务逻辑和用户交互时表现得更为出色。 1. **Action和Result**: 在Struts 2.0中,Action类是处理...
Struts2.0是Java Web开发中非常重要的一个MVC框架,它是在原有的Struts1.x基础上进行改进和发展而来的。这个"三大框架中文文档中的struts2.0开发手册"为程序员提供了一份详尽的参考资料,帮助他们理解和掌握Struts...
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的新...
在`web.xml`中,需要定义一个名为`struts`的Filter,并指定`FilterDispatcher`类作为Filter实现。`init-param`用于配置Action的扩展名,如将默认的`.do`改为`.action`。过滤器映射`<filter-mapping>`应覆盖所有URL,...
Struts2.0是一款强大的Java Web框架,它在MVC(Model-View-Controller)设计模式的基础上,提供了灵活且强大的架构来构建企业级的Web应用程序。这个“Struts2.0 Jar包”包含了所有必要的库文件,使得开发者可以便捷...
Struts2.0是一个强大的Java Web开发框架,它极大地简化了从前端到后端的数据交互和业务逻辑处理。本教程将深入讲解如何使用Struts2.1.8版本来实现对MySQL数据库的操作,包括添加、删除和修改数据的功能。 首先,...
通过这个“Struts2.0中文教程”,开发者可以全面了解并掌握Struts2.0框架,提升Web开发效率,同时也能了解到Struts2.0在实际项目中的应用和问题解决策略。教程中的`.chm`文件是一种Windows平台下的帮助文档格式,...
在Struts2.0的应用开发中,首先我们需要理解其核心概念: 1. **Action类**:这是业务逻辑的载体,通常继承自`com.opensymphony.xwork2.ActionSupport`或自定义Action接口。开发者在Action类中编写处理用户请求的...
JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0...
### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 Struts 2.0 是一个基于 Java 的开源框架,用于开发 Web 应用程序。它继承了 Struts 1.x 的优点,并在架构上进行了改进,更加灵活且易于扩展。Struts 2.0 ...
Struts2.0是Struts1的升级版,它在功能和易用性上都有显著提升。框架的核心组件包括Action、Result、Interceptor等,它们协同工作以处理HTTP请求并生成响应。Action是业务逻辑的载体,Result负责视图的呈现,...