Как отключить setRequired калитки для определенных случаев - PullRequest
0 голосов
/ 12 декабря 2018

Я довольно новичок в калитке и только что натолкнулся на setRequired.

У меня есть 5 текстовых полей

    final TextField<String> mfnField = new TextField<>("mfn",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getMfn()));
        form.add(mfnField);
        mfnField.setOutputMarkupId(true);
        form.add(new FdsInfoButton("mfn.infoButton", new ResourceModel("mfn.infoButton")));
        form.add(new FormComponentFeedbackPanel("mfnFeedbackPanel", mfnField));

final TextField<String> pbField = new TextField<>("pid",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getPBId()));
        form.add(pbField);
        pbField.setOutputMarkupId(true);
        form.add(new FormComponentFeedbackPanel("pidFeedbackPanel", pbField));

        final TextField<String> gpidField = new TextField<>("gpid",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getGpid()));
        form.add(gpidField);
        gpidField.setOutputMarkupId(true);
        form.add(new FormComponentFeedbackPanel("gpidFeedbackPanel", gpidField));

        final TextField<String> tidField = new TextField<>("tid",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getTransaction_id()));
        form.add(tidField);
        form.add(new FdsInfoButton("tid.infoButton", new ResourceModel("tid.infoButton")));
        form.add(new FormComponentFeedbackPanel("tidFeedbackPanel", tidField));
final TextField<String> ibanField = new TextField<>("iban",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getIban()));
        form.add(ibanField);
        ibanField.setOutputMarkupId(true);
        form.add(new FormComponentFeedbackPanel("ibanFeedbackPanel", ibanField));   

У меня есть поле и поле:

final DateTimePicker fromInput = new DateTimePicker("from",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getFromDate()),
                DateTimePicker.START_OF_DAY);
        form.add(fromInput);
        form.add(new FormComponentFeedbackPanel("fromFeedbackPanel", fromInput));

        final DateTimePicker toInput = new DateTimePicker("to",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getToDate()),
                DateTimePicker.END_OF_DAY);
        form.add(toInput);
        form.add(new FormComponentFeedbackPanel("toFeedbackPanel", toInput));

Из 5 текстовых полей:

  • если что-то будет введено в первые четыре, тогда мне нужно будет также ввести поля from и tofield, поэтому для этого setRequired должно быть true
  • но если что-то введено в tidField, независимо от того, являются ли другие текстовые поля пустыми или заполненными, setRequired должно иметь значение false для входов frominput и toinput.

Мой вопрос заключается в том, как установить значения true и false.

Или я могу использовать что-то еще, кроме setRequired?

1 Ответ

0 голосов
/ 14 декабря 2018

Я нашел решение: мне пришлось использовать isRequired, а не setRequired

final DateTimePicker fromInput = new DateTimePicker("from",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getFromDate()),
                DateTimePicker.START_OF_DAY) {
            /**
             *
             */
            private static final long serialVersionUID = 1L;

            @Override
            public boolean isRequired() {
                return Strings.isBlank(tidField.getConvertedInput());
            }

        };
        form.add(fromInput);
        form.add(new FormComponentFeedbackPanel("fromFeedbackPanel", fromInput));

        final DateTimePicker toInput = new DateTimePicker("to",
                model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getToDate()),
                DateTimePicker.END_OF_DAY) {

            /**
                     *
                     */
            private static final long serialVersionUID = 1L;

            @Override
            public boolean isRequired() {
                return Strings.isBlank(tidField.getConvertedInput());
            }
        };
        form.add(toInput);
...