【发布时间】:2012-06-19 07:17:47
【问题描述】:
这是正确的:
当我在验证之前(或者如果验证失败)查询一个值时,我必须使用getSubmittedValue();。一旦验证了值,即使我稍后在页面/控件中的另一个验证中查询它,我也必须使用 .getValue();,因为 getSubmittedValue(); 在成功验证后返回 null?
【问题讨论】:
标签: xpages
这是正确的:
当我在验证之前(或者如果验证失败)查询一个值时,我必须使用getSubmittedValue();。一旦验证了值,即使我稍后在页面/控件中的另一个验证中查询它,我也必须使用 .getValue();,因为 getSubmittedValue(); 在成功验证后返回 null?
【问题讨论】:
标签: xpages
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
}
【讨论】:
有一个稍微简单一点的方法:如果你只是期待一个简单的单值字符串,只需调用:
var compare = firstField.getValueAsString();
否则,调用:
var compare = com.ibm.xsp.util.FacesUtil.convertValue(facesContext, firstField);
无论如何,前者调用后者,但显然是一种更简洁的语法。这可以满足您的需求以及更多功能:
【讨论】:
找到答案here。因此,当您要确保 2 个文本字段具有相同的值(用例:请重复您的电子邮件)并且第一个框已经有可能失败的验证时,您需要使用提交的值,除非它为空,然后您使用该值.第二个字段的验证表达式中的代码如下所示:
var firstField = getComponent("inputText1");
var compare = firstField.getSubmittedValue() || firstField.getValue();
compare == value;
你必须爱它。
【讨论】: