Hi,
you can find any information about inputSuggestAjax on the
corresponding wiki site:
http://wiki.apache.org/myfaces/InputSuggestAjax
You should use this component if you need something like autoSuggest
functionality. The typed string into the input is passed to the
suggestedItems method. It was designed to give the user a dynamically
retrieved list of suggested Strings back.
If you need something like the selectItems approach, it is not the
right choice for you.
cheers,
Gerald
On 1/16/07, Beelen, Marco <[EMAIL PROTECTED]> wrote:
Hello,
I would like to use some inputSuggest functionality in my application, but
can't get the inputSuggest or inputSuggestAjax component working properly.
What I can't appair to get correct is return types on the methods on my
managed-bean which provided the available options and the handling of a
submitted value.
In my application I have a class Product with an id and a name and my DAO
provides me with a List<Product>.
Prior to my attempts to use inputSuggest I was using:
<h:selectOneMenu value="#{managedBean.selectedProductId}">
<t:selectItems
value="#{managedBean.products}"
var="product"
itemLabel="#{product.name}"
itemValue="#{p.id}"
/>
</h:selectOneMenu>
And during the handling of the form I would lookup the proper Product by
it's id.
My assumption was that <s:inputSuggest> also could work with <t:selectItems>
so I wrote the xhtml like this:
<s:inputSuggest value="#{managedBean.name}" required="true">
<t:selectItems
value="#{managedBean.products}"
var="product"
itemLabel="#{product.description}"
itemValue="#{product.description}"
/>
</s:inputSuggest>
But that causes a ClassCastException during rendering.
java.lang.ClassCastException: [Ljavax.faces.model.SelectItem;
at
org.apache.myfaces.custom.suggest.InputSuggestRenderer.getChoices(InputSuggestRenderer.java:224)
at
org.apache.myfaces.custom.suggest.InputSuggestRenderer.encodeBegin(InputSuggestRenderer.java:100)
at
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:512)
at
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:232)
at ..
So I switched to:
<s:inputSuggest value="#{mangedBean.name}" required="true">
<f:selectItems value="#{managedBean.productSuggests}"/>
</s:inputSuggest>
Where the managedBean.getProductSuggests() returns a Map<String, String>
Now the page get rendered and I can enter a product name with suggestion.
( Although with some style issues with the suggestions being underneath
other form elements, but that a minor issue for later. )
In method called by the action of my commandButton on the from I would like
to get the appropreate Product-object, so I wanted to perform a lookup based
upon the field name of the managedBean. Only the value of that field wasn't
the exact value of the suggestion but something like
"m:_id100_choicePRODUCTNAME"
I don't know where the prefix 'm:_id100_choice" comes from, but I don't
suppose mu managedBean should be responsible for stripping it.
Is this a bug or am I doing something wrong?
As an alternative I was looking at <s:inputSuggestAjax> so I changed the
xhtml to:
<s:inputSuggestAjax
suggestedItemsMethod="#{managedBean.productSuggests}"
value="#{mangedBean.name}" charset="utf-8" />
I tried to implement productSuggests-method with returning: Map<String,
String>, List<String>, List<SelectItem>, but nothing worked.
In all cases the page does get rendered, but no inputSuggest is available
due to JavaScript-errors. ('Can't "move focus to the control because it is
invisible, not enalbed or of a type that doesn't accept focus")
Any (input)suggestion on how to work with these components is greatly
appreciated.
With kind regards,
Marco Beelen
------------------------------------------------------------------------------
Notice: This e-mail message, together with any attachments, contains
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station,
New Jersey, USA 08889), and/or its affiliates (which may be known
outside the United States as Merck Frosst, Merck Sharp & Dohme or MSD
and in Japan, as Banyu - direct contact information for affiliates is
available at http://www.merck.com/contact/contacts.html)
that may be
confidential, proprietary copyrighted and/or legally privileged. It is
intended solely for the use of the individual or entity named on this
message. If you are not the intended recipient, and have received this
message in error, please notify us immediately by reply e-mail and then
delete it from your system.
------------------------------------------------------------------------------
--
http://www.irian.at
Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German
Professional Support for Apache MyFaces