使用ADF列表视图的主从数据

最近,从UI角度来看,ADF Faces 组件不再被认为很酷。 对于显示数据集合, 列表视图今天应该很酷。 这并不意味着我们根本不应该使用af:table 。 在某些情况下(经常是:)),表比列表视图更适合。 但是,列表视图组件看起来非常好,它非常适合现代UI趋势,并且绝对值得在ADF应用程序中广泛使用。

与数据收集有关的最常见用例之一是显示主从数据。 在这篇文章中,我将展示我们可以使用List View对此做些什么。

列表视图组件提供了开箱即用的功能,可以通过使用groupHeaderStamp构面来显示层次结构数据。

假设在应用程序中定义了Departments-Employees层次结构:

屏幕截图2015年12月1日下午2.53.27

如果我们将详细信息集合“雇员”拖到页面上并选择“ ADF列表视图”作为所需组件,该向导将允许我们包括一个包含来自父集合的属性的组标题:

屏幕截图2015年12月1日下午2.56.44

结果,页面上的列表视图将包含具有Department属性的groupHeaderStamp构面:

<af:listView value="#{bindings.Departments.treeModel}" var="item" ...fetchSize="#{bindings.Departments.rangeSize}" id="lv1"><af:listItem id="li1"><af:panelGridLayout id="pgl2"><af:gridRow marginTop="5px" height="auto" marginBottom="5px" id="gr1"><af:gridCell marginStart="5px" width="34%" id="gc1"><af:outputFormatted value="#{item.bindings.EmployeeId.inputValue}"id="of1"/></af:gridCell>...</af:panelGridLayout></af:listItem><f:facet name="groupHeaderStamp"><af:listItem id="li2"><af:outputFormatted value="#{item.bindings.DepartmentName.inputValue}"id="of6"/></af:listItem></f:facet>
</af:listView>

它看起来像这样:

屏幕截图2015-12-01 at 4.12.37 PM

看起来不错,但实际上并不是我所需要的! 我的要求是实现这样的事情:

屏幕截图2015年12月1日下午4.15.09

因此,每个部门都有一个包含两个选项卡的面板来表示:常规部门信息和员工列表。 这个用例可以使用访问树模型节点定义可以轻松实现。 页面def文件中的列表视图树模型如下所示:

<tree IterBinding="DepartmentsIterator" id="Departments"><nodeDefinition DefName="DepartmentsDeafultVO" Name="Departments0"><AttrNames><Item Value="DepartmentId"/><Item Value="DepartmentName"/></AttrNames><Accessors><Item Value="Employees"/></Accessors></nodeDefinition><nodeDefinition DefName="EmployeesDeafultVO" Name="Departments1"><AttrNames><Item Value="EmployeeId"/><Item Value="FirstName"/><Item Value="LastName"/><Item Value="Email"/></AttrNames></nodeDefinition>
</tree>

Departments0节点定义中定义了“ 雇员”访问者。 它使用员工 视图链接访问器来检索每个部门行的详细记录。 详细记录的结构在Departments1节点定义中描述。

我们将像这样使用这种分层树模型:

<af:listView value="#{bindings.Departments.treeModel}" var="item" ...>            <af:listItem id="li1"><af:panelTabbed position="above" id="pt1" childCreation="lazyUncached"><af:showDetailItem id="tab1" text="Department"><af:panelFormLayout id="pfl1" inlineStyle="height:150px;"><af:panelLabelAndMessage label="#{item.bindings.DepartmentId.hints.label}"id="plam1"><af:inputText value="#{item.bindings.DepartmentId.inputValue}"id="ot1"/></af:panelLabelAndMessage>...</af:panelFormLayout></af:showDetailItem><af:showDetailItem id="sdi1" text="Employees"><af:listView value="#{item.Employees}" var="empItem" ...><af:listItem id="li2"><af:panelGridLayout id="pgl2"><af:gridRow  id="gr1"><af:gridCell id="gc1"><af:outputFormatted value="#{empItem.bindings.EmployeeId.inputValue}"id="of1"/></af:gridCell>...</af:panelGridLayout></af:listItem></af:listView></af:showDetailItem></af:panelTabbed></af:listItem>
</af:listView>

因此,每个列表项都包含一个在内部标记的面板,而Employees选项卡则包含一个引用Employees访问器的嵌套 列表视图 (实际上,它可以是任何东西,例如一个表)。

  • 此职位的示例应用程序可在此处获得 。

它需要JDeveloper 12.1.3。

而已!

翻译自: https://www.javacodegeeks.com/2015/12/master-detail-data-adf-list-view.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 调用私有方法_公开调用私有Java方法?

java 调用私有方法我们是Java开发人员&#xff0c;在Java中已知4种访问修饰符&#xff1a;私有&#xff0c;受保护&#xff0c;公共和包。 好吧&#xff0c;除了私有以外&#xff0c;最后三个可以通过继承&#xff0c;相同的包或实例从类外部调用。 现在&#xff0c;常见的问题…

港航环境变化引起的错误解决方法

1.serlvet API缺少&#xff0c;pom.xml中引入坐标&#xff1b; 2.web.xml中出现错误&#xff0c;将所有的filter调到filtermapping上面去&#xff1b; 3.依赖导入完成后项目依然有红叉&#xff0c;右击项目Propreties->myeclipse->Project Facets->java换成1.6就可以了…

flutter 国际化_从0开始设计Flutter独立APP | 第二篇: 完整的国际化语言支持

鉴于Flutter高性能渲染和跨平台的优势&#xff0c;闪点清单在移动端APP上&#xff0c;使用了完整的Flutter框架来开发。既然是完整APP&#xff0c;架构搭建完全不受历史Native APP的影响&#xff0c;没有历史包袱的沉淀&#xff0c;设计也能更灵活和健壮。国际化语言的支持&…

将旧版本从Java EE 5减少到7

Java EE 5于2005年首次引入&#xff0c;而Java EE 7于2013年问世。这两个版本之间有7年的差距&#xff0c;从技术角度来说&#xff0c;这就像一个世纪。 许多组织仍然对使用Java EE 5感到困惑&#xff0c;并且有很多正当理由选择不升级。 不过&#xff0c;如果您考虑一些前进的…

sql插入临时表数据的方法

方法有两种&#xff0c;主要看需求。 方法1&#xff1a;定义好临时表的字段和类型、插入对应的值 create table #Tmp --创建临时表#Tmp (City varchar(50), --Country varchar(50), -- );insert #Tmp select 北京,中国 union select 东京,日本 union select 纽约,美国 se…

gulp

1.gulp是什么&#xff1f; gulp是前端开发过程中一种基于流的代码构建工具&#xff0c;是自动化项目的构建利器&#xff1b;她不仅能对网站资源进行优化&#xff0c;而且在开发过程中很多重复的任务能够使用正确的工具自动完成&#xff1b;使用她&#xff0c;不仅可以很愉快的编…

往vxe-table添加渲染器怎么添_赚大了!飘窗上装书桌,加扇折叠窗,等于为家里又多添一间房...

阅读本文前&#xff0c;请您先点击上面蓝色字体&#xff0c;再点关 注这样您就可以继续免费收到文章注&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系我们进行删除&#xff0c;谢谢&#xff01; …

【六大排序详解】中篇 :选择排序 与 堆排序

选择排序 与 堆排序 选择排序 选择排序 与 堆排序1 选择排序1.1 选择排序原理1.2 排序步骤1.3 代码实现 2 堆排序2.1 堆排序原理2.1.1 大堆与小堆2.1.2 向上调整算法2.1.3 向下调整算法 2.2 排序步骤2.3 代码实现 3 时间复杂度分析 Thanks♪(&#xff65;ω&#xff65;)&#…

java中contains的用法_java容器中所有接口和类的用法

我这里讲一下如何下载java的api文档还有就是容器和容器之间进行的操作每一个地方称之为一个节点&#xff0c;每一个节点包含了3部分(上一个节点&#xff0c;下一个节点&#xff0c;以及我们自己的数据部分)需要多个线程共享的时候通过键对象来找值对象1 java中的length属性是针…

lcs文本相似度_具有LCS方法的通用文本比较工具

lcs文本相似度常见的问题是检测并显示两个文本的差异&#xff08;尤其是几百行或几千行&#xff09;。 使用纯java.lang.String类方法可能是一种解决方案&#xff0c;但是对于此类操作最重要的问题是&#xff0c;“性能”将不能令人满意。 我们需要一种有效的解决方案&#xff…

MySQL--开发技巧(一)

Inner Join: Left Outer Join: Right Outer Join: Full Join: Cross Join&#xff1a; SELECT t1.attrs ,t2.attrs FROM t1 CROSS JOIN t2 使用Join更新表&#xff1a; UPDATE table1 SET attr2 WHERE attr1 IN (SELECT table2.attr1 FROM table1 INNER JOIN table2 ON tab…

js url解码gbk_使用js解码gbk编码的字符串

如下字符串为 “产后恢复肚子”%B2%FA%BA%F3%BB%D6%B8%B4%B2%D9%CA%D3%C6%B5%BD%CC%B3%CC直接使用js的解码函数解码得到的都是乱码,可以使用下面的函数进行解码/*** js解码gbk url编码的字符串* param {[type]} str gbk编码字符串* param {[type]} charset 字符串的…

mysql 5.7 insert_MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器

在MySQL5.6版本里&#xff0c;不支持一个表有多个INSERT/DELETE/UPDATE触发器。例如创建t1表两个INSERT的触发器&#xff1a;DELIMITER $$USE test$$DROP TRIGGER /*!50032 IF EXISTS */ t1_1$$CREATE/*!50017 DEFINER ‘admin‘‘%‘ */TRIGGER t1_1 AFTER INSERT ON t1FOR E…

Java回调机制解读

模块间调用 在一个应用系统中&#xff0c;无论使用何种语言开发&#xff0c;必然存在模块之间的调用&#xff0c;调用的方式分为几种&#xff1a; &#xff08;1&#xff09;同步调用 同步调用是最基本并且最简单的一种调用方式&#xff0c;类A的方法a()调用类B的方法b()&#…

Java TDD简介–第1部分

欢迎来到测试驱动开发 &#xff08;TDD&#xff09;系列的介绍。 我们将在TDD上下文中讨论Java和JUnit &#xff0c;但这只是工具。 本文的主要目的是使您全面了解TDD&#xff0c;而无论使用哪种编程语言和测试框架。 如果您在项目中不使用TDD&#xff0c;那么您要么很懒&…

状态模式 处理订单状态_将状态机模式实现为流处理器

状态模式 处理订单状态在我的上一个博客中&#xff0c;我说过我真的以为某些“四人行”&#xff08;GOF&#xff09;模式已经过时了&#xff0c;如果不是过时的话肯定不受欢迎。 特别是我说过StateMachine没什么用&#xff0c;因为您通常会想到另一种更简单的方式来执行您正在执…

mysql 连续签到天数_最大连续签到天数-sql

SELECT MIN(rq) as 起始日期, MAX(rq) as 终止日期, MAX(id1) - MIN(id1) 1 as 持续天数,id3 as 累计签到天数,nameFROM (SELECT datediff(rq,2020-02-01 )id1, (SELECT COUNT(1)FROM tmptableWHERE rq < a.rq andtype 是) id2,(SELECT COUNT(1)FROM tmptableWHEREtype 是…

mysql 两个查询结果合并去重_《MySQL 入门教程》第 21 篇 集合操作符

文章来源&#xff1a;https://blog.csdn.net/horses/article/details/108174837来源平台&#xff1a;CSDN原文作者&#xff1a;不剪发的Tony老师数据表与集合理论中的集合非常类似&#xff0c;表是由行组成的集合。SQL 标准定义了基于行的各种集合操作&#xff1a;并集运算(UNI…

binutils工具集之---ar

1.如果要将多个.o文件生成一个库文件&#xff0c;则存在两种类型的库&#xff0c;一种是静态库&#xff0c;在linux里面后缀是.a&#xff0c;另一种是动态库&#xff0c;后缀为.so。 当可执行程序要与静态库进行链接时&#xff0c;所用到的库中的函数和数据会被拷贝到最终的可执…

jax-rs jax-ws_Google App Engine JAX-RS REST服务

jax-rs jax-ws在本文中&#xff0c;您将学习如何使用JAX-RS参考实现&#xff08;Jersey&#xff09;创建REST服务并将其部署在Google AppEngine上。 先决条件 对于本教程&#xff0c;您将需要&#xff1a; 一个Google AppEngine帐户 Eclipse Galileo&#xff08;3.5.x&#xf…