问题标签 [lazydatamodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsf - 带有分页的LazyDataModel,点击下一页或最后一页没有效果
我有这样的代码,它向我显示了 10 行的表格,排序工作完美,但是当我单击下一页或最后一页时出现问题 - 没有发生任何事情。每页的行数也不起作用:(也许我的 JFS bean 应该是 @ManagedBean 而不是 @Named,或者范围不正确?
我正在使用:netbeans 7.3.1(glassFish 4 嵌入式)+ primeFaces 3.5
客户列表.xhtml
客户列表.java
LazyCustomerDataModel.java
jsf - Primefaces延迟数据模型加载覆盖不起作用
我在覆盖primefaceslazydatamodel的负载时遇到问题。错误点在加载方法上。我正在使用primefaces 5.0。在 Jboss Developer Studio 7.1 中工作
如您所见,我正在实现@Override,但它仍然指出:
new LazyDataModel(){} 类型的方法 load(int, int, String, SortOrder, Map) 必须覆盖或实现超类型方法
jsf - Primefaces 分页(lazydatamodel)加载方法
我正在处理的页面有几个问题。
我有两个部分:frmConf 和 frmData。
第一个有一些我用于搜索目的的参数。
第二个有一个定义为惰性和算法的 DataTable,我有它的相应支持,它扩展了 LazyDatamodel。
在第 2 节中提到的 DataTable 中,我有一个带有 commandLink 的列,它为 DataTable 中的选定行创建一个 PDF 文档。
我面临的问题是它在我第一次加载页面时工作得很好:
它从 LazyDatamodel 调用 load (@override) 方法,并显示数据库中查询结果的前 10 条记录。
然后,当我单击 commandLink 列时,它会显示相应 PDF 的“另存为”对话框,我可以继续下载文件。
但是,由于某种我还不明白的原因,如果我单击另一行的 PDF commandLink,它会调用引用的加载方法,假设我正在尝试进行一些分页,但它甚至没有生成所需的 PDF。
我想要实现的只是为每个分页案例加载页面,而不是为任何不相关的事件(例如单击所选行的 PDF 按钮)加载页面。
为什么它在第一次(正确的)PDF 生成之后重新加载和重新查询(即使它显示与分页索引相同的结果没有改变)整个页面内容?我猜在第一个 PDF 生成之后会发生一些事情(它使页面处于“需要重新加载”状态。
我要从页面中留下标记以及相应的支持 bean PDF 生成方法。
如果有人可以帮助我,我真的很感激。
谢谢!
JSF 标记:
支持:(PDF方法)...
jsf - 当存在将多列组合为行键的复合主键时,覆盖/实现 getRowKey() 和 getRowData() 方法
我在 MySQL 数据库中有一个表。不幸的是,GlassFish Server 中的 JAAS 身份验证/授权需要一个复合主键。
该表包含以下格式的数据。
A <p:dataTable>
withrowKey
工作正常,何时lazy
设置为false
.
GroupTablePK
是一个@Embeddable
类(JPA)。我想不需要关于这个类的细节。
但是,当lazy
在 a 上启用时<p:dataTable>
,需要实现getRowKey()
和方法。getRowData()
当有一个复合主键需要将列组合作为行键(唯一的行标识符)时,如何做到这一点?
上面的实现是不完整的。
当在<p:dataTable>
这些实现中选择一行时,方法sout
内的语句将getRowData()
显示以下内容。
该getRowKey()
方法返回一个实例,GroupTablePK
但该getRowData()
方法只接受一个字符串类型的参数。它不是表示复合主键(特此GroupTablePK
)的对象,因此可以将其类型转换为适当的对象类型(GroupTablePK
),并基于该对象类型GroupTable
可以从给定的对象中获取实例List<GroupTable>
并获取getRowData()
返回实例的方法GroupTable
.
如何进一步进行?
该问题纯粹基于上一个问题:
java.lang.UnsupportedOperationException:不使用基本rowKey算法时必须实现getRowData(String rowKey)
编辑:
除了 in 之外,我还有hashcode()
和实现。The method in returns but the method is invoked twice, when a row in a is selected. 它在两个后续调用中分两部分返回字符串表示形式。在第一次调用中,它返回,然后在第二次调用中,它返回。equals()
toString()
GroupTablePK
toString()
GroupTablePK
return "entity.GroupTablePK[ userGroupId=" + userGroupId + ", groupId=" + groupId + " ]";
getRowData()
<p:dataTable>
GroupTablePK
entity.GroupTablePK[ userGroupId=aaa
groupId=ROLE_USER ]
相反,它应该entity.GroupTablePK[ userGroupId=aaa, groupId=ROLE_USER ]
在一次调用中立即返回。
因此,这种比较groupTable.getGroupTablePK().toString().equals(rowKey)
是不可能的,我在这篇文章之前就已经考虑过了。如,
编辑2:
以下是消除 JPA 噪声以重现问题的最短示例。
尝试替代,
- PrimeFaces 3.5
- PrimeFaces 4.0
- PrimeFaces 5.0
- PrimeFaces 5.1
- PrimeFaces 5.2
该行为在所有这些版本的 PrimeFaces 上保持不变。
托管bean:
数据表:
当尝试编辑一行时,将onRowEdit()
调用该方法。getRowData()
如前所述,它被调用两次并在两个后续调用中生成行键的拆分。
这是两个域类GroupTable
和GroupTablePK
.
ajax - Primefaces数据表选择多个使用ajax事件无调用方法
我想在带有 selected 的惰性数据模型上使用 ajax 事件 rowSelectCheckBox 调用侦听器multiple
。我在我的支持 bean 中创建了一个方法,但是没有调用这个方法。
任何人都可以帮助解决这个问题吗?
我的 xhtml:
我的支持豆:
jsf - ap:carousel 中的命令组件由 ap:dataGrid 使用 LazyDataModel 包装当 bean 是请求范围时,不要调用 action(Listener)
例子 :
托管bean:
豆子用@RequestScoped
. DataStore
是一个应用程序范围的 bean,在其中List<Category>
创建和存储 。
给定的命令链接不会触发action()
托管 bean 中的操作侦听器方法 ( ),除非 bean 被装饰@ViewScoped
(或更宽)或惰性数据模型被删除。
因此,改变,
至
将起作用,<p:commandLink>
即将调用给定的动作侦听器(这里不包括惰性数据模型。给定<p:dataGrid>
的直接由List<Category>
支持 bean 的 a 填充)。
另一种选择是使用范围更广的 bean,如前面所述的视图范围 bean。
是否可以在给定情况下使用请求范围的 bean 和惰性数据模型,以便这些组件中的命令组件可以工作?我有很多这样的视图范围 bean,只是因为<p:commandLink>
s 在 a中<p:carousel>
被 a 包裹,<p:dataGrid>
否则它可能被简单地声明为请求范围。
如果需要维护列表和域模型类的应用程序范围的 bean。
应用程序范围的bean:
域类Category
:
域类SubCategory
:
jsf - 避免在托管 bean 中重复一段样板代码重置页面边界(p:dataTable)
从像 a 这样的迭代组件中删除行时,如果最后一页中的所有行都已删除<p:dataTable>
,则当前页面需要重置为其上一页。不幸的是,这不是自动化的。<p:dataTable>
LazyDataModel<T>
从语言上讲,如果一个数据表包含 11 页,每页 10 行,并且第 11 页上的所有行(即最后一页)都被删除,它应该自动获取第 10 页(即前一页),但这不会自动发生(当前页面保持静止(第 11 页),就好像数据表本身被清空一样)除非在关联的支持 bean 中的某处显式编码。
非正式地,相应的伪代码段如下所示。
页偏移量在哪里first
(以 开头0
),pageSize
表示每页的行数,并rowCount
表示来自关联数据存储/数据库的总行数。
实际上:
静态实用程序方法Utility#currentPage()
定义如下。
这是一段样板代码,应该避免在所有地方重复 - 在每个使用<p:dataTable>
with的托管 bean 中LazyDataModel<T>
。
有没有办法自动化这个过程?
jsf - 添加 OmniFaces 后不再调用 PrimeFaces LazyDataModel#load() 方法
PrimeFacesLazyDataModel
在将 OmniFaces jar 添加到 pom.xml 之前工作。它调用load()
的方法LazyDataModel
。
LazyPostDataModel.java
我只是将以下依赖项添加到 OmniFaces 的 pom.xml 中。它不调用load()
方法。
post.xhtml
ManagePostActionBean.java
我的环境是
pom.xml
sorting - 为特定列自定义 LazyDataModel 的排序
如何LazyDataModel
为 中的特定列自定义排序p:dataTable
?
primefaces - Primefaces Paginate Lazy DataTable 没有计数行
在我的页面中,我有:
在我的豆子里:
我的问题是如何从结果(大小+1)中设置行计数。我不想从 DB 中获取计数,因为我确信我们可以在不请求 DB 的情况下计算 rowCount。