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: [email protected]
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]