Элемент управления не входит в метод загрузки Primefaces LazyDataModel

Я смог увидеть данные в datatable перед добавлением атрибута lazy. После того, как я добавил ленивый атрибут, таблица данных пуста, потому что мои точки отладки никогда не были достигнуты, которые находятся внутри метода загрузки LazyDataModel. Другими словами, метод загрузки не вызывается, я вижу элемент управления до this.searchResults в моем поиске ()

Я просто получаю свои результаты от веб-сервисов (которые работают просто отлично). Я просмотрел большинство ссылок здесь и здесь. Я удостоверился, что ленивый атрибут и setRowCount установлены. Может быть, кто-то может помочь мне разобраться в проблеме. Я использую PrimeFaces 6.0, CDI, JSF 2.2, Deltaspike 1.7.2

Вот мой JSF

    // other input form fields
    <p:panel style="border-style : none;" styleClass="panelClass">
        <h:panelGrid columns="2">
            <!-- <h:commandButton action="#{search.search}" value="Search" styleClass="button_small_white" /> -->
            <p:commandButton action="#{search.search}" ajax="true" update=":mainform:searchResultTable" value="Search" styleClass="button_small_white" />
            <h:commandButton action="#{search.clear}" value="Clear" styleClass="button_small_white" />                  
        </h:panelGrid>
    </p:panel>
    <br /><p:dataTable value="#{search.searchResults}" var="rec" 
                        rowKey="rec.numTxt"
                        paginator="true" rows="10" 
                        paginatorTemplate=" Display {RowsPerPageDropdown} Records   {FirstPageLink} 
                        {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}  "
                        rowsPerPageTemplate="10,25,50,100" 
                        paginatorPosition="top"  
                        rendered="#{not empty search.searchResults}"
                        id="searchResultTable"
                        widgetVar="searchTable" 
                        lazy="true" 
                        summary="RE Search Results are shown below">

                <p:ajax event="page" listener="#{search.search}" update=":mainform:searchResultTable"  />            
                <p:column headerText="">
                    <p:selectBooleanCheckbox value="#{rec.select}" />
                </p:column>
                ...
            </p:dataTable>  

контроллер

@Named("search")
@Stateful
@GroupedConversationScoped
@ConversationGroup(SearchGrp.class)
public class ReSearchController extends BaseWebServicesSearchController<ReSearchSummary>
    implements ReGrp, ReSearchControllerLocal {


@Inject
private GroupedConversation conversation;

@Inject
private WindowContext windowContext;

private LazyDataModel<ReSearchSummary> searchResults;

...

@PostConstruct 
@Override
public void init() {
    // code for initializing my web services
    search();
}

@Override
public String search(){

    this.searchResults = new LazyDataModel<ReSearchSummary>() {

        private static final long serialVersionUID = 4168363870903585956L;

        @Override
        public List<ReSearchSummary> load(int first, int pageSize, String sortField, SortOrder sortOrder,
                Map<String, Object> filters) {

            List<ReSearchSummary> resultsList = null;

            resultsList = search(first, pageSize);

            // rowCount
            setRowCount(getResultCount());
            // I do not need sorting oor filters os did not use them

            return resultsList;
        }
    };
    searchResults.setRowCount(getResultCount());
    return "/cr-re-search.xhtml?faces-redirect=true";
}

@Override
public ArrayList<ReSearchSummary> search(int first, int pageSize){
    // this is my webservice call, this works fine if I call it indepedently
    // criteria gets the form inputs
    return doSearch(criteria.getForm(), pageSize, first);
}
...
}

Обновление: преобразовано h:commandButton в p:commandButton для кнопки поиска

<p:commandButton action="#{search.search}" ajax="true" update=":mainform:searchResultTable" value="Search" styleClass="button_small_white" />

И добавил p:ajax внутри p:dataTable

<p:ajax event="page" listener="#{search.search}" update=":mainform:searchResultTable"  />

0 ответов

Другие вопросы по тегам