当前位置: 首页 > 知识库问答 >
问题:

Primefaces懒惰datascroller调用两次load

米俊晤
2023-03-14

我尝试使用带有LazyDataModel的Datascroller,并且来自lazy数据模型的load方法被调用了两次。

由于我的惰性数据模型不是幂等的(也就是说,在相同的窗口/页面大小上连续两次调用该模型会返回不同的结果),多次调用load方法并不是很好(这可能会执行昂贵的服务器/DB往返),因此我认为调用load方法并不是很好的,而调用load方法两次的事实意味着:呈现的结果是不正确的。

datascroller中的load方法被调用两次是否正常?如果是的话,有什么办法可以让我的替代方案正常工作吗?(从statefull数据模型到无状态数据模型的转换)

使用Primefaces 5.1、JSF2、Glassfish 4.1

共有1个答案

葛烨
2023-03-14

不,这不正常。这确实是Primefaces中的一个bug。我们前一阵子在zeef.com上使用时也发现了。我们通过创建一个扩展DataScrollerRenderer的自定义呈现器并仅重写EncodeMarkup()方法而绕过了它,并复制了原始实现,然后只删除了下面的注释:

// BUGFIX: outcommented as this is already done in loadChunk() later on.
/*if(ds.isLazy()) {
    loadLazyData(ds, 0, chunkSize);
}*/

您可以通过在WebApp的faces-config.xml中如下所示注册它来运行它:

<render-kit>    
    <renderer>
        <component-family>org.primefaces.component</component-family>
        <renderer-type>org.primefaces.component.DataScrollerRenderer</renderer-type>
        <renderer-class>com.example.YourDataScrollerRenderer</renderer-class>
    </renderer>
</render-kit>
 类似资料:
  • 我有一个数据表的问题-懒加载。我认为问题是在IdiomasBean.java(TableBean.java),如果我把: 我得到了正确的数据表,但是<代码>按排序、筛选和不起作用。 我得到:java。lang.NullPointerException这里是堆栈跟踪: 下面是代码的其余部分: 指数xhtml diomasBean.java 懒散的数据模型。JAVA IdiomasBo.java 习语

  • 问题内容: 自1.3.0-beta.10版本以来,AngularJS具有一项新功能:“懒惰的一次性绑定”。 可以在简单表达式的前面加上,告诉angular在首次评估表达式后停止观看。给出的常见示例如下所示: 类似以下表达式的语法是否类似? 问题答案: 是。您可以在每个表达式前添加,甚至可以在或中添加前缀: 实际上,代码只是检查表达式中的前两个字符是为了激活一次性绑定(然后将其删除,因此甚至不需要括

  • 我有一个Primefaces,用于显示延迟加载项的列表。我的JSF代码如下所示: 这段代码没有问题。我的支持代码能够根据需要从数据库中延迟加载项,而不是一次将它们全部拉出并在客户端分页。但是,现在我想在datascroller中添加并执行Ajax提交,但只重新呈现单击的项。我的支持操作将更新我的项目的状态,并且我将根据这个状态显示一个不同的消息。我想我可以做这样的事情: ...但是,我现在了解到在

  • 问题内容: 我想创建自己的集合,该集合具有python list的所有属性,并且还知道如何将自身保存到数据库中或从数据库中加载。我也想使负载隐式和惰性,因为在列表创建时它不会发生,而是等到第一次使用时才发生。 有没有一种单一的方法,我可以覆盖上加载任何列表属性(如第一次使用清单,,而不必重写他们… …等)? 问题答案: 不,没有。

  • 我觉得有一个简单的解决办法,但由于某些原因,我不能把我的头围绕它。 我有一个情况,一个按钮必须先点击,才能点击另一个。用户为这2个JButtons选择的选项将决定程序的下一步。这意味着我必须调用actionListener两次,对吗?我如何在一个actionPerformed方法中做到这一点? 如果actionPerformed方法中的(e.getSource()==Square[1][4]&&e

  • 问题内容: 我最近读到了Python 3的一个好处是它很懒。那就更好了 而不是 我很好奇的是如何使用这种懒惰。如果生成映射对象,例如,如何访问生成的操作/列表中的特定元素。在我所见过的几乎所有文档中,他们都会做类似或的事情(据我所知),它放弃了惰性概念,因为它隐式将地图转换为列表。 我想我正在寻找的是能够以与我可以懒惰地懒惰地生成地图对象类似的方式使用地图对象的能力,并且可以在没有巨大计算量的情况