2012-08-08 65 views
5

我有編輯某個實體的頁面。該頁面有兩個命令按鈕。一個是「返回」,一個是「保存」,也是在那個頁面上,我有輸入字段(idInputSubject)。其中一些是必需的,有些則不是。忽略命令按鈕上的驗證按

如何確保我們按下「返回」按鈕(取消編輯並返回)驗證將被忽略,現在不是這種情況。現在,當我按下「返回」或「保存」按鈕時,如果我沒有使用正確的值(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> 

ChooseMeasureControllerMB:

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

回答

0

總之,當你點擊「返回」按鈕,提交表單和數據驗證。爲防止出現這種情況,請將按鈕放在另一個表單中,或者使用Java腳本進行導航。

一般來說,當你想取消一個操作時,你不想提交數據,因爲它會被丟棄。使用一些客戶端操作。我認爲你也可以使用<p:commandButton><p:button>進行導航。這樣,表單也不會被提交。