在ui:repeat中更新表单组件

时间:2019-05-22 09:18:32

标签: jsf

我有一个ajax调用,该调用会更新我的dto上的值,并且应该更新表单以停止呈现某个组件。更改试用模式后,它应该更新一个Java值(该值工作正常,并且还会在时间限制字段中停止呈现。

如果设置了update =“ @ form”,则呈现工作正常,但是从表单中清除了所有值,这也是不可接受的。如果我尝试将更新定位于字段的ID,则无法正常工作,我认为这与重复有关。检查网页时组件的ID为'offencesForm:offences: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();
    }
}

任何帮助将不胜感激。

0 个答案:

没有答案