当前位置: 首页 > 知识库问答 >
问题:

Primefaces多值自动完成

许寒
2023-03-14

我正在使用primefaces AutoMLETE强制选择按名称搜索帐户

JSF组件

<p:autoComplete value="#{journal.journal.debit}"
                completeMethod="#{account.completeAccount}" 
                var="var" itemLabel="#{var.name}" itemValue="#{var}"
                forceSelection="true" immediate="false" required="true">

Bean方法:

public List<Account> completeAccount(String query) {
    List<Account> allAccounts = service.get(Account.class);
    List<Account> filteredAccounts = new ArrayList();

    for (int i = 0; i < allAccounts.size(); i++) {
        Account foundAccount = allAccounts.get(i);
        if (foundAccount.getName().toLowerCase().contains(query.toLowerCase())) {
            filteredAccounts.add(foundAccount);
        }
    }
    return filteredAccounts;
}

这工作正常,现在如果我想把搜索更改为在查询值中搜索账号。我使用了以下内容:

if (foundAccount.getName().toLowerCase().contains(query.toLowerCase()) || foundAccount.getNumber() == Integer.parseInt(query)) {
            filteredAccounts.add(foundAccount);
        }

但是,过滤器只返回搜索号码,而忽略名称搜索。我怎样才能做到这一点?

共有2个答案

李安歌
2023-03-14

试试这个

if (
     (foundAccount.getName().toLowerCase().contains(query.toLowerCase()))
     ||
     (foundAccount.getNumber() == Integer.parseInteger(query))
   )
{
   filteredAccounts.add(foundAccount);
}
关飞翔
2023-03-14

我认为迪帕克想说的是,你所做的是完全有效的,不是Primeface的问题,而是你的情况有问题。事实上,最明显的是没有Integer.parse整数(String s)方法,至少在java.lang.整数中没有。

如果这是某种类型的输入错误,并且您使用的是整数对象(而不是int原语),请确保使用对它们进行比较。等于方法。通过==比较整数将仅在-128-127范围内有效,超出该范围将比较引用。

希望有帮助

 类似资料:
  • 我有一个带有验证器的自动完成-如果我向自动完成器提交一个“AAA”的查询,那么我会得到一个以“AAA”开头的建议列表。我选择了“AAA001”,然后调用验证器,但在验证器中,当我期望“AAA001”时,值为“AAA”。 这是我的代码: 代码只是一个带有getter和setter以及我的验证器的字符串: 即时代码=‘AAA’,而不是预期的‘AAA001’。我添加了object属性只是为了确保对象上没

  • 我使用Primeface 3.4.2自动完成。 在ManagedBean中,当我在自动完成中键入字符时选择一行时,我无法在方法{中获取值 这可能是什么原因?理想情况下,当我从自动完成值中选择一行时,我希望填充或填充jsf页面中的其他列。 自动完成的JSF代码 ManagedBean方法

  • 我在正确使用autoComplete时遇到了一些问题,我试图让用户基于对象的文本字段进行搜索。目前我有以下几点: 我对这段代码的期望是,自动完成将允许用户选择单个问题实例,但一旦从自动完成中选择一个值并触发更新事件,我就会收到以下异常: 有人建议我使用转换器,但我不明白为什么选择的值被视为字符串而不是我的问题对象,因为itemValue被定义为问题对象。 编辑:这是在PrimeFaces 6.2上

  • 我不确定这是否可能。。。但是我想使用autoComplete组件,其中value属性是String类型,completeMethod返回一些重对象的列表。 我还需要使用 这是我认为应该起作用的(但没有): 这是返回建议列表的方法: 如果用户选择一个建议,它会将itemValue设置为所选建议的名称,但会显示Demandeur对象中包含两个值的串联字符串。 建议确实会出现,我可以选择它们,但不幸的是

  • 动态实例化PF 3.4.2自动完成组件时,我遇到了一个问题。组件最初呈现ok,部分处理时刷新其值,但从不显示建议。 我通过以下方式实例化此控件: 然后使用将其添加到父控件 父组件是PF PanelGrid的派生。我使用这种方法成功地生成了各种版本面板,效果非常好。但我不明白为什么它没有自动完成。 父控件看起来像: 它只是将子对象添加到面板网格。 自定义组件声明的其他方面(在taglib等中)也可以

  • 问题内容: 如何使用Redis实现自动完成功能? 比如说我有一个数组。当我型我得到 我希望你明白这一点。我如何有效地使用redis命令来实现这一点(如果可能,但我认为是)。如果我能通过telnet尝试一些简单的命令来模仿这种行为,那就太好了。 谢谢 问题答案: 如果您要处理的是大型数据集,建议您考虑将其实现。我将一小部分Ruby做到了这一点: 例如: 在Wikipedia的Tries条目上阅读有关