跳过验证但仍保留提交的值

Skip validation but still keeps submitted values

我有这个屏幕攻略。客户和联系人是一对多关系。当用户点击 "Create contact person" 时,我想跳过 (A) 的验证,在 "Save" 联系人之后,应保留 (A) 中的输入值。

例如:

"Create" 按钮:

<h:commandLink class="btn"
    action="#{contactPersonController.add()}"
    styleClass="btn pull-right plusButton">
    <i class="icon-plus"></i>&#160;#{msg.add}
    <f:setPropertyActionListener target="#{contactPersonController.itemEditable}" value="#{addable}"></f:setPropertyActionListener>
</h:commandLink>

解决方法是使用

<h:inputText id="customerName" styleClass=""
    value="#{customerCreationController.customerDto.customerName}"
    label="#{msg.customerName}" readonly="#{!customerCreationController.update and !customerCreationController.create}">
    <f:validateRequired disabled="#{param.skipValidation}"/>
    <f:validateLength maximum="#{shortStrLen}" disabled="#{param.skipValidation}"/>
</h:inputText>

<h:commandLink class="btn"
    action="#{contactPersonController.add()}"
    styleClass="btn pull-right plusButton">
    <i class="icon-plus"></i>&#160;#{msg.add}
    <f:param name="skipValidation" value="true"/>
    <f:setPropertyActionListener target="#{contactPersonController.itemEditable}" value="#{addable}"></f:setPropertyActionListener>
</h:commandLink>

参考:Skip validation conditionally JSF