Question

We are upgrading from jsf 1.2 to jsf 2. We are using apache myfaces 2.1 and rich faces 4.3.

Below is the xhtml code prior to migration :

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

</rich:suggestionbox>

As per migration doc , replaced <rich:suggestionbox> with <rich:autocomplete>. Following is the xhtml code :

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

Below is the getSearchList method

  public List<CustomObject> getSearchList(String searchNow) {


  } 

The <rich:autocomplete> component exists inside a custom component which is invoked like this :

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

The issue i am facing is , when an input is entered inside <rich:autocomplete> , ajax call happens but i am am getting below exception : Target Unreachable, identifier 'bean' resolved to null.

I printed the value of bean (of bean.getSearchList ) inside xhtml and it is not null.

Am i missing anything while using <rich:autocomplete> ? Please help.

EDIT 1 : When the autocompleteMethod is invoked like this : #{masterBean.object2.object3.getSearchList}, this issue is not observed where masterBean is the one defined in faces-config.xml with session scope. Also autocompleteMethod must accept String argument and not object. So is it that we cannot invoke autocompleteMethod on an intermidiate object ? It has to be a bean defined in JSF ? It is strange , but I am observing the same behaviour.

EDIT 2 : While trying to search for an answer , got this link which states the same issue : autocomplete method does not resolve bean if ui:included and only one parameter provided It gives two options : define autocomplete method with 3 parameters , use a composite component, rather than a ui:inlcude.

Was it helpful?

Solution

As evident from EDIT 2 , the autocomplete method signature is changed as :

public List<CustomObject> getSearchList(FacesContext context, UIComponent uiComp,String searchNow) , and the issue is resolved.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top