2010-10-25 326 views
13

我實現了我的驗證邏輯如下:JSF驗證客戶端或服務器端?

 <h:inputText id="title" value="#{...}" 
      required="true" requiredMessage="...some..text..." 
      validatorMessage="...some..other..text..." > 
      <f:validateLength minimum="10" maximum="50"/> 
     </h:inputText> 

我讀了很多關於客戶方和服務器端驗證及他們的優點和缺點。但是我不知道上面的代碼是幹什麼的。

可有人請解釋:-)

乾杯

回答

29

在客戶端驗證,這是其與客戶端語言的幫助,例如驗證輸入客戶端(網頁瀏覽器) JavaScript的。在服務器端驗證中,它是在服務器端語言的幫助下驗證輸入的服務器(網絡服務器),例如, Java的。

你永遠不應該做只有客戶端驗證,因爲結果是由最終用戶控制(因此也hackable/spoofable)。通常,您想使用客戶端驗證,因爲它提供了更快的反饋。最終用戶無需等待表單提交完成,也無需面對「內容快閃」(頁面空白,然後重新顯示新內容)。您想使用服務器端驗證來確保提交的數據的完整性。最終用戶無法控制服務器端驗證的結果。

在JSF的情況下,驗證是總是服務器端。由於JSF 2.0可以使用內建的Ajax功能來提交表單(因此也可以驗證表單)。這結合了兩個世界中最好的一個:即時反饋,沒有內容的閃光,以及服務器端驗證的健壯性/完整性。

+0

謝謝你的這些明智的話。你能給我一個鏈接(或一個例子)如何包括ajax到我的代碼:-)這將是偉大的:-) ...或者它只是有時令人困惑的標籤? – Sven 2010-10-25 12:13:48

+1

是的,'f:ajax'是將javascript/AJAX引入您的代碼的一種方法。對於如何開始使用它的指針,請參閱相關問題:http://stackoverflow.com/questions/3138488/how-to-use-ajax-with-jsf-2-0 – 2010-10-26 21:24:40

+2

@Sven:把''UICommand'內部。或者,如果您想驗證每個輸入元素的模糊效果,請在每個UIInput組件內部放置<'。 – BalusC 2010-10-26 21:51:57

相關問題