Cjxcz Odjcayrwl
Cjxcz Odjcayrwl

Reputation: 22847

Request update of component with ajax from LazyDataModel.load?

I'm using PrimeFaces version 3.5.

I want to implement the message informing that the filter in the DataTable have return too many rows and only first 50 will be displayed.

I've tried to do it with both Messages and outputText. I set the text to display and request update:

RequestContext context = RequestContext.getCurrentInstance(); 
context.update("form:message");
context.update("form:text");
message = "Too many rows";

The components:

<p:message id="message" for="message"/>
<h:outputText id="text" value="#{userPicker.model.message}"/>

However, I don's see the proper update sections in partial-request response. Is it possible to request the update of components from within the LazyDataModel.load function (and if, what I'm doing wrong here)? If it is not possible (why?) how else can I force refresh of element from DataTable filtering?

Upvotes: 1

Views: 2341

Answers (1)

Cjxcz Odjcayrwl
Cjxcz Odjcayrwl

Reputation: 22847

The load method of LazyDataModel is invoked in render phase, when it's too late to add additional components to update.

However, it is possible to add JavaScript execution command:

context.execute("show_message()");

Where function show_message will display the message on client side, which enables to accomplish the task with single request.

Upvotes: 5

Related Questions