【发布时间】:2019-12-12 09:01:15
【问题描述】:
我有一个函数可以调用我的 XPage 上的哪个组件向服务器提交:
//Used to check which if a component triggered an update
function submittedBy( componentId ){
try {
var eventHandlerClientId = param.get( '$$xspsubmitid' );
var eventHandlerId = @RightBack( eventHandlerClientId, ':' );
var eventHandler = getComponent( eventHandlerId );
if( !eventHandler ){
return false;
}
var parentComponent = eventHandler.getParent();
if( !parentComponent ){
return false;
}
return ( parentComponent.getId() === componentId );
} catch( e ){ /*Debug.logException( e );*/ }
}
我有一个通常通过表达式语言调用的验证器:
validator="#{applicationValidators.valPhone}"
我想通过检查提交是否由带有 btnSave id 的元素/组件完成,例如
<xp:this.validator><![CDATA[#{javascript:if (submittedBy('btnSave')){
return applicationValidators.valPhone();
}}]]></xp:this.validator>
但是如果我通过 EL 调用该方法,valPhone 函数会自动注入一些输入:
public void valPhone(FacesContext facesContext, UIComponent component, Object value)
有没有办法在 EL 中包含 submitBy 函数,或者我必须在 SSJS 中调用函数时提供对象,因为现在我收到错误消息:
执行 JavaScript 动作表达式脚本解释器时出错 错误,行 = 2,列 = 38:Java 类上的 Java 方法 'valPhone()' 'org.acme.projectx.test.ApplicationValidators' 未找到
当我应用对象时,例如
applicationValidators.valPhone(facesContext,getComponent("inpPhone"),getComponent("inpPhone").getValue());
它确实运行了验证器方法,但似乎不知道如何处理响应(在我的例子中,我抛出一个带有消息的 ValidatorExeption。
执行 JavaScript 动作表达式脚本解释器时出错 错误,行=4,列=31:错误调用方法 'valPhone(com.ibm.xsp.domino.context.DominoFacesContext, com.ibm.xsp.component.xp.XspInputText, java.lang.String)' 在 java 上 类 'org.acme.projectx.test.ApplicationValidators' 电话不是 有效
Phone is not valid 是我在 ValidatorExeption 中抛出的 FacesMessagge 中包含的字符串消息。
【问题讨论】:
-
为什么不检查验证器中的 submittedBy 组件?
标签: validation xpages