2012-08-08 2 views
5

Ho una pagina in cui modifico alcune entità. Quella pagina ha due pulsanti di comando. Uno è "Indietro" e uno è "Salva" e anche in quella pagina ho un modulo con campi di input (idInputSubject). Alcuni sono obbligatori, altri no.Ignora convalida su commandButton premere

Come posso assicurare di premere il pulsante "Indietro" (annullare la modifica e tornare indietro) la convalida verrà ignorata, cosa che non avviene ora. Ora, quando premo o "Indietro" o "Salva", vengono visualizzati i messaggi di convalida se non ho compilato richiesto archiviato con i valori corretti (idInputSubject).

entrambi i pulsanti "Indietro" e "Salva" sono nella stessa forma:

<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"; 
} 
... 
} 

risposta

0

In breve, quando si sta facendo clic sul pulsante "indietro", si invia il modulo ei dati vengono convalidati. Per evitare ciò, posizionare il pulsante in un altro modulo o utilizzare Java-script per la navigazione.

In generale, quando si desidera annullare un'operazione, non si desidera inviare i dati, poiché deve essere scartato. Usa qualche azione sul lato client. Penso che puoi anche usare uno <p:commandButton> o uno <p:button> per la navigazione. In questo modo il modulo non viene inviato neanche.