【问题标题】:populate primefaces autocomplete with dropdown使用下拉列表填充 primefaces 自动完成
【发布时间】:2015-09-04 05:56:42
【问题描述】:

在 JSF 中使用 primeface

<p:autoComplete minQueryLength="5" value="#{itemManagementMB.itemManagementLazy.code}" forceSelection="true" autocomplete="false"
    completeMethod="#{itemManagementMB.autoCompleteUsindCode}" dropdown="true">
    <p:ajax event="itemSelect" listener="#{itemManagementMB.handleSelect}" />
</p:autoComplete>

当我输入 5 个关键字 时,效果很好。但我想以这种方式实现,如果用户输入 4 个单词 并按下下拉菜单,它会根据 4 个关键字填充自动完成。

有一件事阻止了我,当我点击下拉菜单时,autoCompleteUsindCode(String query) 方法采用空字符串,itemManagementMB.itemManagementLazy.code 也是空的。

任何更新? / 解决方案

【问题讨论】:

  • 你能发布你的 autoCompleteUsindCode() 方法的内容吗?
  • 从我在您的代码中看到的 forceSelection="true" 属性是导致您的 autoCompleteUsindCode 方法得到一个空字符串的原因。为什么不直接将 minQueryLength 设为 4 并让 completeMethod 自行触发?
  • @Fritz 我删除了forceSelection="true" 属性。相同的行为。 why not just make minQueryLength to 4 and let the completeMethod trigger on its own?这是客户要求。

标签: jsf primefaces


【解决方案1】:

根据 Primefaces 5.1 用户指南第 29 页,我引用:

下拉模式

启用下拉模式时,旁边会显示一个下拉按钮 输入字段,单击此按钮将进行空搜索 查询,一个常规的 completeMethod 实现应该加载所有 可用项目作为响应。

【讨论】:

    【解决方案2】:

    想了很多,我就这样解决了

    解决方案:

    <p:autoComplete id="anum" minQueryLength="5" value="#{transferInMB.itemManagementLazy.code}" forceSelection="true"
        completeMethod="#{transferInMB.autoCompleteUsingCode}" dropdown="true">
        <p:ajax event="itemSelect" listener="#{transferInMB.handleSelect}" />
        <p:ajax event="keyup" />
    </p:autoComplete>
    

    我只是添加以下内容

    <p:ajax event="keyup" />
    

    【讨论】:

    • 那么在你放置keyup ajax 事件之后基本上发生了什么?您可以在哪里获得支持 bean 中的 4 个关键字?
    • @Fritz value="#{transferInMB.itemManagementLazy.code}"
    猜你喜欢
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多