【发布时间】:2013-05-24 20:52:57
【问题描述】:
我使用的是 PrimeFaces 3.5 版。
我想实现一条消息,通知 DataTable 中的过滤器返回太多行,只显示前 50 行。
我尝试使用 Messages 和 outputText 来实现。我将文本设置为显示并请求更新:
RequestContext context = RequestContext.getCurrentInstance();
context.update("form:message");
context.update("form:text");
message = "Too many rows";
组件:
<p:message id="message" for="message"/>
<h:outputText id="text" value="#{userPicker.model.message}"/>
但是,我在部分请求响应中没有看到正确的更新部分。是否可以从 LazyDataModel.load 函数中请求更新组件(如果,我在这里做错了什么)?如果不可能(为什么?)我还能如何从 DataTable 过滤中强制刷新元素?
【问题讨论】:
-
您在组件生命周期的哪个阶段尝试这样做?
-
它在 LazyDataMode.load() 方法中。它是由 PrimeFaces 内部调用的,所以我不确定它是什么生命周期。
-
在组件的任何页面生命周期
<f:event/>位置,postAddToView可能会更安全地执行此操作 -
好吧,p:dataTable 的过滤是一个非常独立的机制,但是它不是很容易扩展,例如它不支持过滤器存储/恢复,这个问题主要是针对那些非常了解的人以及 PrimeFaces 的内部结构,因为有非常具体的事情在发挥作用。我看到组件渲染调用了 load(),所以我认为这是一个请求额外渲染的阶段为时已晚?
标签: jsf jsf-2 primefaces