2012-08-08 63 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>进行导航。这样,表单也不会被提交。