2014-01-08 3 views
1

Мы обновляемся с jsf 1.2 до jsf 2. Мы используем apache myfaces 2.1 и rich faces 4.3.rich: автозаполнение не работает

Ниже приведен код XHTML до миграции:

<h:inputText id="#{userSearch}" value="#{bean.input}"/> 
<rich:suggestionbox for="#{userSearch}" var="rslt" suggestionAction="#{bean.getSearchList}">          

</rich:suggestionbox> 

В соответствии миграции документ, заменен <rich:suggestionbox> с <rich:autocomplete>. Ниже приведен код XHTML:

<rich:autocomplete mode="ajax" autocompleteMethod="#{bean.getSearchList}" /> 

Ниже приведен способ getSearchList

public List<CustomObject> getSearchList(String searchNow) { 


    } 

<rich:autocomplete> компонент существует внутри пользовательского компонента, который вызывается так:

<example:SearchUsr bean="#{someOtherObject.bean}"/> 

Проблема я столкнулся в том, когда вход вошел внутрь <rich:autocomplete>, Ajax вызов происходит, но я подвожу ниже исключения: Target Недостижимый, идентификатор «bean» разрешен для null.

Я напечатал значение bean (из bean.getSearchList) внутри xhtml и не имеет значения null.

Я ничего не вижу при использовании <rich:autocomplete>? Пожалуйста помоги.

РЕДАКТИРОВАТЬ 1: Когда autocompleteMethod вызывается так: #{masterBean.object2.object3.getSearchList}, эта проблема не наблюдается, где masterBean, которая определена в лицах-config.xml с областью сеанса. Кроме того, autocompleteMethod должен принимать аргумент String, а не объект. Так что мы не можем вызывать autocompleteMethod на промежуточном объекте? Он должен быть компонентом, определенным в JSF? Это странно, но я наблюдаю одно и то же поведение.

EDIT 2: При попытке найти ответ, получил эту ссылку, которая гласит тот же вопрос: autocomplete method does not resolve bean if ui:included and only one parameter provided Это дает два варианта: определить автозаполнения метод с 3 параметрами, использование составного компонента, а не пользовательский интерфейс : inlcude.

+0

С пользовательским компонентом вы имеете в виду пользовательский компонент facelet или составной компонент? –

+0

@ L-Ray: его компонент гибкости лица – Atul

ответ

2

Как видно из EDIT 2, метод автозаполнения подпись изменена:

public List<CustomObject> getSearchList(FacesContext context, UIComponent uiComp,String searchNow), и проблема будет решена.