Обновление компонента формы в пользовательском интерфейсе: повторить - PullRequest
0 голосов
/ 22 мая 2019

У меня есть вызов ajax, который обновляет значение в моем dto и должен обновить форму, чтобы остановить рендеринг определенного компонента. Когда режим пробной версии изменяется, он должен обновить значение Java (которое работает правильно, а также остановить рендеринг в поле ограничения по времени.

Если установлено update = "@ form", рендеринг работает правильно, однако все значения также удаляются из формы, что недопустимо. Если я пытаюсь нацелить обновление на идентификатор поля, оно не работает, я предполагаю, что это как-то связано с повторением. Идентификатор компонента при проверке веб-страницы - «offencesForm: offenses: 0: statutoryTimeLimit», однако обновление, которое также не работает.

Любая помощь в обновлении рендеринга компонента без очистки значений в остальной части формы была бы полезной.

Раскрывающийся список, который вызывает метод, по которому выполняется удар.

<ui:repeat id="offences" value="#{casefileDto.offences}" var="_offence" varStatus="n">

    <!-- Update Time Limit value in dto & update component to render statutoryTimeLimit by modeOfTrial value -->
    <ecis:field label="Mode of trial" starred="true" help="#{label['casefile.help.modeOfTrial']}" helpLayout="hover">
        <p:selectOneMenu value="#{_offence.modeOfTrial}" 
                        converter="omnifaces.SelectItemsIndexConverter"
                        required="${param['skipValidation'] == null}" requiredMessage="Please select the mode of trial">
            <f:selectItem noSelectionOption="true" itemLabel="" itemValue="#{null}"/>
            <f:selectItems value="#{conditionCache.modeOfTrialConditions}" />
            <p:ajax event="change" update="statutoryTimeLimit" listener="#{_offence.onTrialModeSelect()}"/>
        </p:selectOneMenu>
    </ecis:field>

    <!-- Render based off modeOfTrial values -->
    <ecis:field id="statutoryTimeLimit" label="Statutory time limit expires on" rendered="#{supplementary and _offence.timeLimitRequired()}"
                help="Calculated from 'Date of offence' plus six months." helpLayout="hover">
        <h:outputText value="#{_offence.statutoryTimeLimit}" >
            <f:convertDateTime pattern="#{cvCache.dateFormat}" />
        </h:outputText>
    </ecis:field>

</ui:repeat>

Java-код

public boolean timeLimitRequired() {
    return modeOfTrial != null && modeOfTrial.getValue().contains("(SST)");
}

public void onTrialModeSelect() {
    if (getModeOfTrial().toString().equals("Not suitable for summary trial (NSST)")) {
        setStatutoryTimeLimit(null);
    } else {
        onOffenceDateSelect();
    }
}

Любая помощь будет высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...