2012-06-19 27 views
1

是否正確: 當我在驗證之前查詢值(或驗證失敗)時,我必須使用getSubmittedValue();。一旦該值被驗證,即使我在頁面/控制中稍後在另一驗證中查詢它,我必須使用.getValue();,因爲getSubmittedValue();返回null成功驗證後?getSubmittedValue()與getValue()

回答

2

有一個稍微更簡單的方法:如果你只是期待一個簡單的單值的字符串,只要致電:

var compare = firstField.getValueAsString(); 

否則,請致電:

var compare = com.ibm.xsp.util.FacesUtil.convertValue(facesContext, firstField); 

無論如何,前者會調用後者,但顯然是一種更爲清晰的語法。這樣做你要找的內容和更多:

  1. 如果價值尚未得到驗證,返回提交的值
  2. 如果驗證已通過,返回值,它已經被任何後處理轉換器和/或內容過濾器,所以特別是在你試圖比較兩個字段值的情況下,這應該確保兩個值已經適當修剪等等,並且因此不太可能返回誤報,而不僅僅是比較原始提交的值。
0

找到了答案here。所以,當你想確保2個文本字段具有相同的值(用例:請重複你的電子郵件),並且第一個盒子已經有可能失敗的驗證,你需要使用submittedValue,除非它爲空,那麼你使用值。第二個字段驗證表達式中的代碼如下所示:

var firstField = getComponent("inputText1"); 
var compare = firstField.getSubmittedValue() || firstField.getValue(); 
compare == value; 

您必須喜歡它。

3

This xsnippet使得它更容易處理。它允許您只需撥打getComponentValue("inputText1")即可獲取值或提交值。

下面是參考值的功能:

function getComponentValue(id){ 
  var field = getComponent(id); 
  var value = field.getSubmittedValue(); 
  if(null == value){ 
         // else not yet submitted 
         value = field.getValue(); 
  } 
  
  return value 
} 
+0

真棒醬好先生。 –