自动填充,按需加载记录

时间:2015-01-14 15:02:13

标签: javascript jquery jsf primefaces autocomplete

我正在使用PrimeFaces 3.5。我有一个自动完成,我想搜索加载20行,当用户scrols到底部加载更多的10个结果(如果有的话)。这是我的自动填充功能:

<p:autoComplete rendered="#{autoCompleter.hasCompletions}" widgetVar="${id}"
        id="${id}" style="position: relative"
        value="#{autoCompleter.value}"
        completeMethod="#{autoCompleter.suggest}" 
        var="s"
        itemLabel="#{s.name}" 
        itemValue="#{s}"
        converter="#{autoCompleter.converter}" 
        forceSelection="true"
        queryDelay="500"
        scrollHeight="400"
        required="#{required}"
        requiredMessage="#{msgs['label.address.autocompleter.required']}"
        styleClass="#{required ? 'ui-input-required' : ''}"
        maxResults="#{autoCompleter.maxResult}">

        <p:ajax event="change"
                partialSubmit="true"
                update="#{update}"  
                onstart="if(${id}.panel.is(':visible')) return false;"/>

        <p:ajax event="itemSelect"
                partialSubmit="true"
                update="#{update}"/>

        <p:ajax event="blur"
                partialSubmit="true"
                update="#{update}"
                disabled="true"/>

        <ui:insert name="menu">
            <p:column>#{s.name}</p:column>
        </ui:insert>

    </p:autoComplete>

我已经添加了这个javascript来加载下一个结果块:

<p:remoteCommand name="loadNextSettlementsChunk"
                 action="#{autoCompleter.suggest}"
                 update="${id}"     
                 partialSubmit="true"
                 immediate="true"/>
<script type="text/javascript">
    jQuery(function($) {
        $('.ui-autocomplete-panel').bind('scroll', function() {
            if($(this).scrollTop() + $(this).height() >= $(this)[0].scrollHeight) {
                loadNextSettlementsChunk();
            }   
        });
    });
</script>

但是我没有加载下一个结果,而是收到警告信息:

  

无法找到与from-view-id匹配的导航案例   '/policies/index.xhtml'用于行动'#{autoCompleter.suggest}'   结果'[Văleni(Viişoara),Viişoara,Viişoara(Todireşti),Viişoara   (Vaslui),Viişoara,Viişoara,Viişoara,Viişoara,Viişoara,Viişoara,   Viişoara-Moşneni,Viişoara,ViişoaraMică,Viişoara(Păuneşti),   Viişoara(Vidra),Viişoara,Viişoara,Viişoara,Viişoara,Viişoara   (ŞtefancelMare),Viişoara(TârguTrotuş),Viişoara,Viişoara,   Viilor,Valea Viilor,Dealu Viilor,Dealu Viilor(Moşoaia),Dealu   Viilor(Poiana Lacului)]'和[]括号是我的结果。怎么样   修复这个问题才能正常工作?

1 个答案:

答案 0 :(得分:0)

action属性必须指向一个方法,该方法调用某些业务逻辑并返回 void String ,但方法的结果为{{ 1}}是 ArrayList 。因此,我建议您使用suggest代替actionListener,以便在没有导航页面的情况下调用您的业务逻辑。

action