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]