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(InputS uggestRenderer.java:224) at org.apache.myfaces.custom.suggest.InputSuggestRenderer.encodeBegin(Input SuggestRenderer.java:100) at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:5 12) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSuppo rt.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. ------------------------------------------------------------------------------