Hello, I'm asking for help...
I'm a newbie in wicket and I need to solve quite quick following
problem:
there are 2 AutoCompleteTextField fields in the form on the page A,
when value in the first field selected the second one is filled
automatically and vice versa.
These fields are filling two fields of one Object.
there is a possibility to go to the other page and then return back
after creating some staff on the page B.
The problem is in usage of back button to return from page B to
page A without creation any staff.
The field that was set during ajax event handling becomes empty.
Huge thanks in advance!
The code I'm using is following:
public class MyPage extends WebPage {
private MyObj myO = new MyObj();
public MyPage() {
Form myForm = new MyForm("myForm");
FeedbackPanel message = new FeedbackPanel("message");
message.setOutputMarkupId(true);
add(message);
add(myForm);
}
private class MyForm extends Form {
private HashMap<String, NameDTO> autoComplete;
NameDTO myNameDTO;
private AutoCompleteTextField number;
private AutoCompleteTextField name;
public MyForm(String id) {
super(id);
number = this.initNummer();
name = this.initName();
//AutoComplete fields
add(number);
add(name);
...
} //EO Form constructor
private AutoCompleteTextField initNummer() {
AutoCompleteTextField nummer;
IAutoCompleteRenderer numRenderer
= new AbstractAutoCompleteTextRenderer() {
@Override
protected String getTextValue(Object obj) {
if (obj != null) {
NameDTO obj2 = (NameDTO) obj;
autoComplete.put(obj2.getNummer(), obj2);
return obj2.getNummer();
}
return "";
}
};
// initialize number
nummer = new AutoCompleteTextField("number",
new PropertyModel(myO, "nummer"), numRenderer) {
@Override
protected Iterator getChoices(String prefix) {
autoComplete = new HashMap<String, NameDTO>();
List objs = CompleteUtils.readByNummer(prefix);
return objs.iterator();
}
};
nummer.add(new AjaxFormComponentUpdatingBehavior("onchange")
{
@Override
protected void onUpdate(AjaxRequestTarget target) {
myNameDTO = autoComplete.get(myO.getNummer());
name.modelChanging();
myO.setName((myNameDTO == null) ? "" :
myNameDTO.getName());
name.setModelObject(myO.getName());
name.modelChanged();
target.addComponent(name);
}
});
nummer.setOutputMarkupId(true);
return nummer;
}
private AutoCompleteTextField initName() {
AutoCompleteTextField name;
IAutoCompleteRenderer myNameRenderer
= new AbstractAutoCompleteTextRenderer() {
@Override
protected String getTextValue(Object obj) {
if (obj != null) {
NameDTO obj2 = (NameDTO) obj;
autoComplete.put(obj2.getName(), obj2);
return obj2.getName();
}
return "";
}
};
//initialize name
name = new AutoCompleteTextField("name",
new PropertyModel(myO, "name"), myNameRenderer) {
@Override
protected Iterator getChoices(String prefix) {
autoComplete = new HashMap<String, NameDTO>();
List objs = AutoCompleteUtils.readByName(prefix);
return objs.iterator();
}
};
name.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
myNameDTO = autoComplete.get(myO.getName());
number.modelChanging();
myO.setNummer((myNameDTO == null) ? "" :
myNameDTO.getNummer());
number.setModelObject(myO.getNummer());
number.modelChanged();
target.addComponent(number);
}
});
name.setOutputMarkupId(true);
return name;
}
....
} //EO Form
}
--
Katherine.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]