2014-11-20 2 views
0

Я использую primefaces autocomlete выбора силы для поиска через счета по имениPrimefaces Multiple Value автозаполнения

JSF Component

<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; 
} 

это работает отлично, теперь, если я хочу изменить поиск, чтобы искать также номер счета в q uery. Я использовал следующие:

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

, но затем, фильтр возвращает только поиск по количеству и игнорируя поиск по имени. Как я могу это достичь?

ответ

-1

попробовать это

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

это то, что я пробовал! см. код выше. – fareed

1

Я думаю, что Дипак пытается сказать, что то, что вы делаете, это вполне допустимо, а не проблема с primefaces, а что-то не так с вашим состоянием. И действительно, самое очевидное, что нет метода Integer.parseInteger(String s), по крайней мере, нет в java.lang.Integer.

Если это опечатка какой-то, и если вы работаете с Integer объектов (а не INT примитивов), убедитесь, что вы сравниваете их с помощью .equals метода. Сравнение целых чисел на == будет работать только в диапазоне от -128 до 127, за пределами этого диапазона он будет сравнивать ссылки.

Надеюсь, это поможет

+0

Это была опечатка, и я редактировал мой код '.getNumber()' будет возвращать 'int', а не' Integer', поэтому я использовал '==' вместо '.equals'. после выполнения второго условия выполняется второе условие, и первое условие игнорируется. – fareed

Смежные вопросы