这里以'景点+门票类型'的用例为示例,其对应关系为1-N,在数据库中门票类型表包含了对应门票的外键。使用Hibernate的的级联操作从数据库中取出的景点对象scenery,scenery对象包含门票类型列表(List类型)tbSceneryTickets。景点的hbm文件的有如下的one-to-many设置:
<!-- 这里需要Parent一端设置inverse="true" cascade="all"-->
<list name="tbSceneryTickets" lazy="false" inverse="true" cascade="all">
<key><column name="SCENERY_ID" /></key>
<index column="ID" type="java.lang.String" />
<one-to-many class="TbSceneryTickets" />
</list>
需要注意的是这里通过index属性设置了List的索引为门票类型的ID(所以这里需要设置其主键ID为数字)。
在JSP中取得tbSceneryTickets中每个对象的值时候,使用struts2的iterator标签,通过OGNL表达可以设置其value属性的值为“scenery.tbSceneryTickets”,通过设置其id属性来标识每个对象,代码如下:
<s:iterator value="scenery.tbSceneryTickets" id="h">
<s:if test="#h != null">
<tr id="oldTicket<s:property value='#h.id'/>">
<td>
门票类型:<input type="text" name="scenery.tbSceneryTickets[<s:property value='#h.id'/>].typeName"
class="input" value='<s:property value="typeName"/>' />
</td>
<td>
门票价格:<input type="text" name="scenery.tbSceneryTickets[<s:property value='#h.id'/>].price"
class="input" value='<s:property value="price"/>' />
</td>
</tr>
</s:if>
</s:iterator>
在取得tbSceneryTickets中每个门票类型对象的值的时候,可以将其索引和属性作为页面标签的name属性值,如门票类型值:
<input type="text" name="scenery.tbSceneryTickets[<s:property value='#h.id'/>].typeName"
这里注意的是索引的取法,这里的#h.id对应的是List中该门票类型对象的索引值,同时也是该门票类型对象在数据库中的主键值。所以修改提交时,Struts2通过ONGL表达式将每个门票类型对象的属性更新到服务器端的tbSceneryTickets列表中,由于存在hibernate的映射和级联设置,也可以顺利的更新到数据库中。
如果这时有新的门票类型在修改景点对象的时候插入,可用的策略是在浏览器端用JavaScript来控制输入框的添加,并且维持一个唯一的索引,代码如下(代码中的索引i为大于0的动态数值):
门票类型:<input type="text" name="newSceneryTickets[i].typeName" />
在服务器端维持一个名为newSceneryTickets的门票类型的List,前段提交后,Struts2通过ONGL表达式将每个新增的门票类型对象存入到服务器端的newSceneryTickets列表中,然后在将newSceneryTickets的中的每个门票类型对象存入tbSceneryTickets列表中,到由于存在hibernate的映射和级联设置,也可以顺利的插入到数据库中,并且自动建立新增门票类型对象和景点对象的对对应关系。
分享到:
相关推荐
Struts2和JSP是两种在Java Web开发中广泛使用的技术。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,它主要用于构建和维护可扩展的、易于测试的Web应用程序。而JSP(JavaServer Pages)是一种...
2. **JSP和Struts2的集成**:在JSP页面中,我们可以通过`<s:form>`、`<s:textfield>`等Struts2标签库来创建表单和输入字段,实现与Action的交互。这需要`struts2-jsp-plugin.jar`,它包含了JSP标签库的实现。 3. **...
在这个“struts2中jsp和freemarker模板视图的案例”中,我们将深入理解如何使用这两种不同的视图技术与Struts2框架进行集成。 首先,我们来看JSP(JavaServer Pages)作为视图的实现。JSP是Java中的动态网页技术,...
【学校宿舍管理系统(Struts2+JSP+DAO)】是一个典型的Web应用程序,它结合了Struts2框架、JavaServer Pages(JSP)以及Data Access Object(DAO)模式,旨在高效地管理和维护学校的宿舍资源。这个系统的核心是通过...
Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序。在本项目"struts2+jdbc+jsp增删改...通过实践这样的项目,开发者能够深入理解如何在实际应用中整合Struts2、JDBC和JSP,提升自己的技能。
Struts2和JSP Servlet上传是Web开发中的常见场景,主要涉及如何在用户提交表单时处理文件上传请求。这两个技术都是Java Web开发的重要组成部分,Struts2是一个基于MVC设计模式的开源框架,而Servlet是Java EE规范的...
这个"客户管理系统案例<Struts2+JSP+MySQL>"为初学者提供了一个全面了解Web开发流程的机会,涵盖了从后端到前端、数据库设计到实际应用的各个环节。通过实践这个案例,开发者可以深入理解这三个技术的协同工作方式,...
struts2+jsp 文件上传,供大家一起共同分享学习。
【标题】"jsp+struts2完整实例"揭示了这个项目是基于Java Web技术栈,主要使用了JSP(JavaServer Pages)和Struts2框架来实现一个完整的应用程序。Struts2是一个开源的MVC(Model-View-Controller)框架,它在Java ...
通过研究这些文件,你可以深入理解如何将AJAX、Struts2和JSP结合,实现动态交互的Web应用。 总结来说,"ajax+struts2.0+jsp下拉列表级联"展示了如何利用现代Web技术提升用户体验。AJAX提供了无刷新的交互,Struts2...
综上所述,"struts2 + jsp 简单通讯录"项目涵盖了Web开发中常见的技术栈,包括前端展示、后端处理和数据存储,是学习和实践Web开发基础的一个好例子。开发者可以通过此项目了解如何将这些技术有效地结合起来,构建一...
本项目"struts2+jsp宿舍管理系统"便是这种技术实践的体现,它利用Struts2的控制层优势和JSP的视图功能,实现了对宿舍事务的有效管理。 首先,Struts2作为Java Web开发中的主流框架,其核心在于Action类和配置文件。...
【注册系统struts2+jsp+mysql】是一个基于Java Web技术构建的用户管理系统,它集成了Struts2框架、JSP(JavaServer Pages)以及MySQL数据库。这个系统提供了基础的用户管理功能,如用户注册、登录、信息增删改及分页...
在本文中,我们将深入探讨如何使用jQuery、Uploadify、Struts2和JSP技术实现一个图片批量上传的Demo。这个组合提供了高效、用户友好的文件上传解决方案,特别适合需要处理大量图片的Web应用。 首先,jQuery是一个轻...
Java Struts2 OGNL(Object-Graph Navigation Language)标签是用于在JSP页面中动态地访问和操作Java对象的强大工具。以下是对这些知识点的详细解释: 1. **对象树的访问**: OGNL允许开发者通过点号(`.`)来遍历...
在Web开发中,"jsp+struts2购物车"是一个常见的实战案例,它涉及到Java Web技术的多个层面,包括前端展示、后端业务处理以及数据库操作。这个项目是学习JSP(JavaServer Pages)和Struts2框架的理想实践,下面我们将...
Struts2+JDBC+jsp+mysql 构建的考勤...总结,Struts2+JDBC+jsp+mysql的考勤系统是结合了前端MVC框架、数据访问、动态页面和数据库存储的综合应用,它提供了一个高效、可扩展的解决方案,满足企业对员工考勤管理的需求。
**标题与描述解析** 标题"jsp+hibernate+struts2简单登录和注册"指出,这个项目是基于Java Web...通过学习这个项目,开发者可以深入了解JSP、Hibernate和Struts2如何协同工作,以及如何利用MySQL来存储和检索数据。
博客后台管理系统是一个基于Struts2、JSP和MySQL技术实现的应用程序,主要用于管理博客网站的内容、用户和元数据。这个系统通常包含多个模块,如文章发布、用户管理、评论处理等,提供对博客数据的增删改查功能,...
在这个场景下,我们关注的是如何在Struts2中迭代Map和List对象。这两种数据结构在Web开发中经常被用到,特别是在展示表单数据或动态渲染页面元素时。 首先,让我们深入了解`struts2-taglib`,这是一个包含Struts2...