我目前正在一个应用程序中使用三种不同的形式,RadioChoice,DateField和DropDownChoice,其中页面根据用户从此表单中选择的内容做出反应。这里的问题是,当我提交使用DateField和DropDownChoice的表单时,它会刷新页面并记住RadioChoice中的选项,但会显示默认选项。所以我的问题是,是否可以清除值并在刷新后将它们设置回默认值,或者使DateField和DropDownChoice的提交不刷新页面?
//RADIO CHOICE
RadioChoice<String> radioChoice = new RadioChoice<String>("radio", new PropertyModel<String>(this, "selectedRadio"),this.radioChoiceList);
radioChoice.add(new AjaxFormChoiceComponentUpdatingBehavior()
{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target)
{
target.appendJavaScript(changeBaseLayerJS(Page.this.currentMap, Page.this.selectedRadio));
Page.this.currentMap = Page.this.selectedRadio;
}
});
Form<?> radioForm = new Form<Void>("radioForm");
add(radioForm);
radioForm.add(radioChoice);
//DATEFIELD AND DROPDOWNCHOICE
DateField fromDateField = new DateField("fromDateField", new PropertyModel<Date>(
this, "fromDate"));
DateField toDateField = new DateField("toDateField", new PropertyModel<Date>(
this, "toDate"));
DropDownChoice<String> idvNameMenu = new DropDownChoice<String>("idvNameMenu", new PropertyModel<String>(this, "idvTrackName"), individualChoiceList);
Form<?> trackingForm = new Form<Void>("trackingForm"){
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit()
{
//do stuff
}
};
答案 0 :(得分:3)
正常(非Ajax)表单提交会导致整页重绘。 Ajax表单提交将仅重新放入您放入AjaxRequestTarget
的组件。
您可以使用form.add(new AjaxFormSubmittingBehavior() {...})
来使用Ajax。
或者你可以zero
- 你可以在onSubmit
中建模对象:
@Override
protected void onSubmit()
{
// do stuff
// save in database
fromDate = null; // or = new Date();
toDate = null;
idvTrackName = "some good default value";
}