2012-07-05 27 views
3

有沒有辦法在JSF2,我們還可以避免表單提交, 或者乾脆表單提交時不做任何事?避免表單提交,如果沒有輸入值發生變化

我們有一個形式, 填充有一些默認值幾個輸入字段(20輸入字段), 如果沒有值改變,那麼我們不希望提交表單。

是否有任何JSF直接的方式,我們可以做到這一點?

<h:form id="summaryForm" prependId="false"> 
    <h:inputText id="inputField1" value="#{summaryBean.inputFieldValue1}" /> 
    <h:inputText id="inputField1" value="#{summaryBean.inputFieldValue2}" /> 
    <h:inputText id="inputField1" value="#{summaryBean.inputFieldValue3}" /> 
    <h:inputText id="inputField1" value="#{summaryBean.inputFieldValue4}" /> 
    <h:inputText id="inputField1" value="#{summaryBean.inputFieldValue5}" /> 
    <h:commandButton action="#{summaryBean.submitSummary}" /> 
</h:form> 
+0

如果您有默認值映射,在操作方法中您可以比較它們。如果值未更改,則返回null;它顯示相同的視圖,否則返回「nextview」 – kosa

+0

你的意思是默認值,無論我們在初始化階段。 嗯,是的,我們有很多值,那麼我們可能需要保存所有這些值用於比較目的。除此之外,無論是在客戶端還是服務器端,jsf都是有辦法的。 – uday

+0

如果沒有與現有值進行比較,很難找出變化,所以無論是客戶端/服務器端,都需要進行此比較。 – kosa

回答

1

簡短的回答是否定的,在普通的JSF中你不能這麼做。 雖然你可以在客戶端使用JavaScript和jQuery來完成。

... include jQuery somewhere here ... 

<script> 
var anyInputChanged = false; 
var checkIfAnyValueChanged = function(){ return anyInputChanged; }; 
(function($) { 
    $(function() { 
     // set variable anyInputChanged to TRUE on event 'onchange', 
     // for the fields with class "submitOnlyIfChanged" 
     $('.submitOnlyChanged').change(function(){ anyInputChanged = true; }); 
    }); 
})(jQuery); 
</script> 

<h:form id="summaryForm" prependId="false"> 
    <!-- set up all the fields with the class "submitOnlyIfChanged" --> 
    <h:inputText class="submitOnlyIfChanged" id="inputField1" 
     value="#{summaryBean.inputFieldValue1}" /> 
    <h:inputText class="submitOnlyIfChanged" id="inputField2" 
     value="#{summaryBean.inputFieldValue2}" /> 
    <h:inputText class="submitOnlyIfChanged" id="inputField3" 
     value="#{summaryBean.inputFieldValue3}" /> 

    <!-- set up a check if any field was changed on button click --> 
    <h:commandButton onclick="return checkIfAnyValueChanged();" 
     action="#{summaryBean.submitSummary}" /> 
</h:form> 
+0

這是我絕對尋找的東西。 即使JSF中沒有選項仍然可以,我們可以使用這種方式。 非常感謝你@eljunior。 – uday

+0

不客氣! – elias