gpt4 book ai didi

java - PF 数据表值和filteredValue - 最佳实践

转载 作者:行者123 更新时间:2023-12-01 12:53:12 26 4
gpt4 key购买 nike

我应该早点问这个问题,但现在我真的厌倦了回避这个问题:

我有一个普通的数据表,例如 <p:dataTable id="dt1" var="tVar" value="#{mrBean.queriedElements}" filteredValue="#{mrBean.filteredElements}" ...

现在,除了 primefaces 过滤器之外,我还制作了自己的 panelGrid,您可以在其中将过滤器应用到数据库,这些过滤器在任何 PF 操作之前起作用。存在以下列表:queriedElements 包含应用我的个人过滤器后返回的所有数据,filteredElements 是 primefaces 数据表过滤所需的。此外,我不确定是否需要一个代表数据库中所有数据的元素列表。如果未应用个人过滤器,则 queryedElements = allElements。

数据表显示有关所包含对象的大量信息,您可以通过对话框更改这些对象。我想要以下内容:

  • 保存后,更新对 selectedElement 所做的所有更改
  • 取消后,恢复数据表中的所有更改(我不使用已编辑的临时对象,而是使用列表中的对象)
  • 关闭对话框时,记住所有过滤器和分页器位置

这样做的最佳实践是什么?如何避免 queriedElements 和 FilteredElements 的冗余代码(以防除了数据库合并之外我还必须迭代它以显式更改它)?我找到了分页的第一个属性,但我不太确定如何结合我的其他要求正确使用它。我的主要问题是,如果我不从数据库重新获取,数据表几乎永远不会显示正确的值。

PF 4.0

最佳答案

我不知道为什么 PF 4.0 本身不这样做,但是可以在 http://www.brainhemorage.com/?p=258 找到对我有用的东西。

虽然我不得不更换线路

  ValueExpression filterBy = column.getValueExpression("filterBy");
String filterField = null;
if (filterBy != null)
filterField = table.resolveStaticField(filterBy);
String filterId = column.getContainerClientId(context) + separator + "filter";
String filterValue = params.containsKey(filterId) && !table.isReset() ? params.get(filterId) :
table.getFilters().get(filterField); // <-- and here, was ""
String filterStyleClass = column.getFilterStyleClass();

String filterId = column.getContainerClientId(context) + separator + "filter";
String filterValue = params.containsKey(filterId) && !table.isReset() ? params.get(filterId) :
table.getFilters().get(column.getFilterBy());

因为 getValueExpression 总是返回 null。

虽然这并不能回答我关于 BP 的问题,但这肯定会帮助其他人解决filteredValue 问题。

关于java - PF 数据表值和filteredValue - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24058982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com