问题标签 [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.

0 投票
2 回答
12550 浏览

jsf - 带有分页的LazyDataModel,点击下一页或最后一页没有效果

我有这样的代码,它向我显示了 10 行的表格,排序工作完美,但是当我单击下一页或最后一页时出现问题 - 没有发生任何事情。每页的行数也不起作用:(也许我的 JFS bean 应该是 @ManagedBean 而不是 @Named,或者范围不正确?

我正在使用:netbeans 7.3.1(glassFish 4 嵌入式)+ primeFaces 3.5

客户列表.xhtml

客户列表.java

LazyCustomerDataModel.java

0 投票
1 回答
8050 浏览

jsf - Primefaces延迟数据模型加载覆盖不起作用

我在覆盖primefaceslazydatamodel的负载时遇到问题。错误点在加载方法上。我正在使用primefaces 5.0。在 Jboss Developer Studio 7.1 中工作

如您所见,我正在实现@Override,但它仍然指出:

new LazyDataModel(){} 类型的方法 load(int, int, String, SortOrder, Map) 必须覆盖或实现超类型方法

0 投票
0 回答
1008 浏览

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方法)...

0 投票
2 回答
9016 浏览

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()GroupTablePKtoString()GroupTablePKreturn "entity.GroupTablePK[ userGroupId=" + userGroupId + ", groupId=" + groupId + " ]";getRowData()<p:dataTable>GroupTablePKentity.GroupTablePK[ userGroupId=aaagroupId=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()如前所述,它被调用两次并在两个后续调用中生成行键的拆分。


这是两个域类GroupTableGroupTablePK.

0 投票
2 回答
9600 浏览

ajax - Primefaces数据表选择多个使用ajax事件无调用方法

我想在带有 selected 的惰性数据模型上使用 ajax 事件 rowSelectCheckBox 调用侦听器multiple。我在我的支持 bean 中创建了一个方法,但是没有调用这个方法。

任何人都可以帮助解决这个问题吗?

我的 xhtml:

我的支持豆:

0 投票
0 回答
123 浏览

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

0 投票
0 回答
283 浏览

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>

有没有办法自动化这个过程?

0 投票
1 回答
606 浏览

jsf - 添加 OmniFaces 后不再调用 PrimeFaces LazyDataModel#load() 方法

PrimeFacesLazyDataModel在将 OmniFaces jar 添加到 pom.xml 之前工作。它调用load()的方法LazyDataModel

LazyPostDataModel.java

我只是将以下依赖项添加到 OmniFaces 的 pom.xml 中。它不调用load()方法。

post.xhtml

ManagePostActionBean.java

我的环境是

pom.xml

0 投票
1 回答
163 浏览

sorting - 为特定列自定义 LazyDataModel 的排序

如何LazyDataModel为 中的特定列自定义排序p:dataTable

0 投票
3 回答
2921 浏览

primefaces - Primefaces Paginate Lazy DataTable 没有计数行

在我的页面中,我有:

在我的豆子里:

我的问题是如何从结果(大小+1)中设置行计数。我不想从 DB 中获取计数,因为我确信我们可以在不请求 DB 的情况下计算 rowCount。