getSubmittedValue()与getValue()

时间:2012-06-19 07:17:47

标签: xpages

这是正确的: 当我在验证之前查询值(或验证失败)时,我必须使用getSubmittedValue();。一旦验证了该值,即使我稍后在页面/控件中的另一个验证中查询它,我也必须使用.getValue();,因为getSubmittedValue();在成功验证后返回 null

3 个答案:

答案 0 :(得分:3)

This xsnippet可以更轻松地处理此问题。它允许您只需调用getComponentValue("inputText1")即可获得value或submittedValue。

以下是参考功能:

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

答案 1 :(得分:2)

有一种稍微简单的方法:如果您只是期待一个简单的单值String,只需调用:

var compare = firstField.getValueAsString();

否则,请致电:

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

前者无论如何都称之为后者,但显然是一种更简洁的语法。这可以满足您的需求和更多:

  1. 如果尚未验证该值,则返回提交的值
  2. 如果验证已经过,请在任何转换器和/或内容过滤器处理完之后返回该值,特别是在您尝试比较两个字段值的情况下,这应确保两个值都已正确修剪等等,因此比仅仅比较原始提交的值更不可能返回误报。

答案 2 :(得分:0)

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

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

你必须喜欢它。