我們正在從jsf 1.2升級到jsf 2. 我們使用的是apache myfaces 2.1和豐富的面孔4.3。富有:自動完成不工作
下面是XHTML代碼之前遷移:
<h:inputText id="#{userSearch}" value="#{bean.input}"/>
<rich:suggestionbox for="#{userSearch}" var="rslt" suggestionAction="#{bean.getSearchList}">
</rich:suggestionbox>
作爲每遷移DOC,取代<rich:suggestionbox>
與<rich:autocomplete>.
以下是XHTML代碼:
<rich:autocomplete mode="ajax" autocompleteMethod="#{bean.getSearchList}" />
下面是getSearchList方法
public List<CustomObject> getSearchList(String searchNow) {
}
<example:SearchUsr bean="#{someOtherObject.bean}"/>
我面臨的問題是,當內部<rich:autocomplete>
輸入的輸入,AJAX調用發生,但我正在逐漸例外如下: 目標10 <rich:autocomplete>
組件被調用像這樣的自定義組件內部存在無法訪問,標識符'bean'解析爲null。
我在xhtml裏打印bean(bean.getSearchList)的值,它不是null。
我在使用<rich:autocomplete>
時丟失了什麼?請幫忙。
EDIT 1: 當autocompleteMethod調用這樣的:#{masterBean.object2.object3.getSearchList}
,未觀察到這個問題,即masterBean是faces-config.xml中定義的會話範圍的一個。另外autocompleteMethod必須接受String參數而不是對象。 那麼,我們無法在中間對象上調用autocompleteMethod?它必須是一個在JSF中定義的bean?這很奇怪,但我正在觀察同樣的行爲。
編輯2: 在試圖尋找一個答案,得到了這個鏈接,指出了同樣的問題:autocomplete method does not resolve bean if ui:included and only one parameter provided 它提供了兩個選項:定義自動完成的方法有3個參數,使用複合組件,而不是UI :inlcude。
用自定義組件表示一個facelet自定義組件或複合組件? –
@ L-Ray:它是一個facelet cutom組件 – Atul