wicket刷新后形成明确的选择

时间:2018-06-04 06:58:28

标签: java apache wicket wicketstuff

我目前正在一个应用程序中使用三种不同的形式,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
        }   
    };

1 个答案:

答案 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";
}