1

Is that correct: When I query a value before validation (or if validation failed) I have to use getSubmittedValue();. Once the value is validated, even if I query it in another validation later in the page/control I have to use .getValue(); since getSubmittedValue(); returns null after successful validation?

4

3 回答 3

3

这个 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
}
于 2012-06-19T07:31:51.250 回答
2

有一个稍微简单的方法:如果你只是期待一个简单的单值字符串,只需调用:

var compare = firstField.getValueAsString();

否则,请致电:

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

前者无论如何都调用后者,但显然是一种更简洁的语法。这可以满足您的需求以及更多功能:

  1. 如果该值尚未验证,则返回提交的值
  2. 如果验证已经通过,则在任何转换器和/或内容过滤器已对其进行处理后返回该值,因此特别是在您尝试比较两个字段值的情况下,这应确保两个值都已正确修剪等.,因此与仅比较原始提交的值相比,返回误报的可能性较小。
于 2012-06-19T08:45:13.213 回答
0

在这里找到了答案。因此,当您要确保 2 个文本字段具有相同的值(用例:请重复您的电子邮件)并且第一个框已经有可能失败的验证时,您需要使用提交的值,除非它为空,然后您使用该值. 第二个字段的验证表达式中的代码如下所示:

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

你必须爱它。

于 2012-06-19T07:23:17.667 回答