Thanks. It helped me. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Ryan Gravener Sent: Tuesday, April 15, 2008 2:53 PM To: users@wicket.apache.org Subject: Re: help wanted for wicket autocomplete component
Set the model object in getTextValue(java.lang.Object object) but in your renderChoice(*) do not call getTextValue!!! make another method called getStringValue() and return the actor name, then in getTextValue set the modelobject and return getStringValue(). I am not positive this will work. On Tue, Apr 15, 2008 at 2:23 PM, Patel, Sanjay <[EMAIL PROTECTED]> wrote: > Hi, > > > > I am trying to implement a simple auto complete AJAX text box which gives me > the names of actors as I type in (by searching and getting the list of actors > from database), and set the Model Object (which is Actor selected from the > auto complete drop down) for the Panel (in which this Auto complete Text > Field lies); In adding a Behavior to the field, I am trying to do a setModel( > ) for the panel (which contains the AutoCompleteTextField), but when I get > the object (autoCompleteTextField.getModelObject( )) inside the behavior > anonymous class, It returns a string, even though outside I seem to be > getting model Object fine (outside as in outside the anonymous class > declaration). Here's the full code as I know it. > > > > final AutoCompleteTextField actorInformationAutoCompleteTextField = new > AutoCompleteTextField("input-auto-complete-actorForPanel-search", new > Model((Actor) getModel().getObject()), > > new AbstractAutoCompleteRenderer() { > > private static final long serialVersionUID = 1L; > > > > /** > > * [EMAIL PROTECTED] > > */ > > @Override > > protected String getTextValue(Object object) { > > return ((Actor) object).getLastName() + COMMA_SEPARATOR + (((Actor) > object).getFirstName()); > > } > > > > /** > > * [EMAIL PROTECTED] > > */ > > @Override > > protected void renderChoice(Object object, > Response response, String criteria) { > > response.write(getTextValue(object)); > > > > } > > }) { > > > > private static final long serialVersionUID = 1L; > > > > /** > > * [EMAIL PROTECTED] > > */ > > @Override > > @SuppressWarnings("unchecked") > > protected final Iterator<Actor> getChoices(final String > input) { > > System.out.println(" getChoices called > -------------------> "); > > if (Strings.isEmpty(input)) { > > return Collections.EMPTY_LIST.iterator(); > > } > > > > // our list of choices (this is displayed with when > user starts typing something) > > final List<Actor> choices = new ArrayList<Actor>(10); > > > > // set the search key for data provider ... > > List<Actor> actors = new ActorDataProvider(input, > 10).search(0, 10).getCollection(); > > > > for (int i = 0; i < actors.size(); i++) { > > System.out.println(" Inside actors loop > >>>>>>>>>>>>"); > > System.out.println(" Actor[i] ------------> " + > actors.get(i).getFirstName()); > > final Actor actorTemp = actors.get(i); > > > > if (actorTemp.getFirstName().trim().contains(input) || > actorTemp.getLastName().contains(input)) { > > choices.add(actorTemp); > > > > } > > > > if (choices.size() == 10) { > > break; > > } > > } > > > > return choices.iterator(); > > } > > > > }; > > > > > > Here is where I add Behavior: > > actorInformationAutoCompleteTextField.add(new > AjaxFormSubmitBehavior("onchange") { > > private static final long serialVersionUID = 1L; > > > > /** > > * [EMAIL PROTECTED] > > */ > > @Override > > protected final void onSubmit(final AjaxRequestTarget > target) { > > System.out.println(" onSubmit( ) for > AjaxFormSubmitBehavior called ...."); > > // set the Model for the panel (with model object > actor) > > AbstractActorInformationPanel.this.setModelObject((Actor) > > > AbstractActorInformationPanel.this.setReviewPlan(getReviewPlanForActor((Actor) > actorInformationAutoCompleteTextField .getModelObject())); > <------------------------ When I try to do getModelObject( ) here it gives me > Class Cast Exception! (Cannot convert from String to Actor) > > } > > > > /** > > * [EMAIL PROTECTED] > > */ > > @Override > > protected final void onError(final AjaxRequestTarget > target) { > > System.out.println(" onError( ) for > AjaxFormSubmitBehavior called ...."); > > } > > }); > > > > > > Can someone tell me what's wrong? > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Ryan Gravener http://ryangravener.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]