форма калитки четкий выбор после обновления - PullRequest
0 голосов
/ 04 июня 2018

В настоящее время я использую три разные формы, 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 голосов
/ 04 июня 2018

Обычная (не Ajax) форма отправки приводит к полной перерисовке страницы.При отправке формы Ajax будут перекрашены только те компоненты, которые вы поместили в AjaxRequestTarget.

. Вы можете использовать form.add(new AjaxFormSubmittingBehavior() {...}), чтобы сделать это с Ajax.объекты в onSubmit:

@Override
protected void onSubmit() 
{
    // do stuff
    // save in database
    fromDate = null; // or = new Date();
    toDate = null; 
    idvTrackName = "some good default value";
}
...