Мы обновляемся с 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.
С пользовательским компонентом вы имеете в виду пользовательский компонент facelet или составной компонент? –
@ L-Ray: его компонент гибкости лица – Atul