这是正确的:
当我在验证之前查询值(或验证失败)时,我必须使用getSubmittedValue();
。一旦验证了该值,即使我稍后在页面/控件中的另一个验证中查询它,我也必须使用.getValue();
,因为getSubmittedValue();
在成功验证后返回 null ?
答案 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);
前者无论如何都称之为后者,但显然是一种更简洁的语法。这可以满足您的需求和更多:
答案 2 :(得分:0)
找到答案here。因此,当您想确保2个文本字段具有相同的值(用例:请重复您的电子邮件)并且第一个框已经有可能失败的验证时,您需要使用submittedValue,除非它为null,然后您使用该值。第二个字段的验证表达式中的代码如下所示:
var firstField = getComponent("inputText1");
var compare = firstField.getSubmittedValue() || firstField.getValue();
compare == value;
你必须喜欢它。