忽略commandButton按下时的验证。

10

我有一个页面,在该页面上编辑了一个实体。该页面有两个命令按钮,一个是“返回”,另一个是“保存”,并且在该页面上有一个带有输入字段(idInputSubject)的表单。其中一些字段是必填的,另一些则不是。

如何确保当我按下“返回”按钮(取消编辑并返回)时忽略验证,而现在不是这种情况。现在,无论我按下“返回”还是“保存”按钮,如果我没有填写所需字段或填写的值不正确,则会出现验证消息。

“返回”和“保存”按钮都在同一个表单中:

<h:form id="idFormMeasureDetail" styleClass="bodyForm" prependId="false">
   ...
   <p:commandButton value="#{contentMB.msg.label_back.value}"
        action="#{chooseMeasureControllerMB.aSearch}"
        rendered="#{detailMeasureMB.navigation eq 0}" ajax="false"
        icon="ui-icon-arrowreturnthick-1-w"/>
   <p:commandButton value="#{contentMB.msg.button_save.value}" ajax="false" 
        icon="ui-icon-disk" actionListener="#{detailMeasureControllerMB.alApplyChanges}" 
                    title="#{contentMB.msg.tip_Apply.value}" />

   ...
   <p:inputTextarea id="idInputSubject" value="#{detailMeasureMB.measure.aufgabe}"
    readonly="#{!userSessionMB.supervisor and !detailMeasureMB.isCreator}"
    required="#{globalSessionMB.globalWebOptionsMap['MMRequiredSubject'].propvalue}"
            title="#{contentMB.msg.tip_Betreff.value}"
            autoResize="false" style="width:100%;" >
   </p:inputTextarea>
   <p:message id="inputSubjectMsg" for="idInputSubject" display="icon" />
   ...

</h:form>

选择测量控制器MB:

@ManagedBean(name = "chooseMeasureControllerMB")
@RequestScoped
public class ChooseMeasureControllerMB extends BaseMeasureControllerMB {
...
public String aSearch() {
            ...
    // navigate to target-page
    return "/pages/mm/showMeasuresList.xhtml?faces-redirect=true";
}
...
}
2个回答

17

0
简而言之,当您点击“返回”按钮时,会提交表单并验证数据。为了防止这种情况发生,请将按钮放置在另一个表单中或使用 JavaScript 进行导航。
一般来说,当您想要取消操作时,您不希望提交数据,因为它将被丢弃。使用一些客户端操作。我认为您也可以使用 <p:commandButton><p:button> 进行导航。这样表单也不会被提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接