When using the RichFaces suggestionBox
how can you pass more than one id or value from the page with the text input to the suggestionBox
backing bean. ie: to show a list of suggested cities within a selected state? Here is my autoComplete
method.
public List< Suburb > autocomplete(Object suggest)
{
String pref = (String) suggest;
ArrayList< Suburb > result = new ArrayList< Suburb >();
Iterator< Suburb > iterator = getSuburbs().iterator();
while( iterator.hasNext() )
{
Suburb elem = ((Suburb) iterator.next());
if( (elem.getName() != null && elem.getName().toLowerCase().indexOf( pref.toLowerCase() ) == 0) || "".equals( pref ) )
{
result.add( elem );
}
}
return result;
}
As you can see there is one value passed from the page, Object
suggest, which is the text of the h:inputText
(in the faceLets m:textFormRow
)
<m:textFormRow id="suburb" label="#{msgs.suburbPrompt}"
property="#{bean[dto].addressDTO.suburb}"
required="true" maxlength="100" size="30" />
<rich:suggestionbox height="200" width="200" usingSuggestObjects="true"
suggestionAction="#{suburbsMBean.autocomplete}" var="suburb" for="suburb"
fetchValue="#{suburb.name}" id="suggestion">
<h:column>
<h:outputText value="#{suburb.name}" />
</h:column>
</rich:suggestionbox>
Earlier in the page you can select a state which I'd like to use to pare down the list of suburbs that the suggestion box displays.
Best Answer
(Disclaimer: I'm aware that the question was asked rather long time ago, but maybe this'll help someone with a similar problem...)
Check out this blog post which deals with something similar: RichFaces - SuggestionBox and hidden field.
The key is to use
<f:setPropertyActionListener value="#{...}" target="#{...}">
wrapped inside<a4j:support event="onselect" ajaxSingle="true">
. This can be used to set an additional value for a backing bean whenonselect
is triggered for the SuggestionBox.With this approach I managed to create a SuggestionBox that displays (and autocompletes) customers' names but upon selection sets a whole customer object (with several properties; identified by an id) for a bean.