validation - 如何根据 SSJS 检查(Xpages)使我的验证器有条件?
问题描述
我有一个函数可以调用我的 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>
但是 valPhone 功能需要一些输入,如果我通过 EL 调用该方法,这些输入会自动注入:
public void valPhone(FacesContext facesContext, UIComponent component, Object value)
有没有办法在 EL 中包含 submitBy 函数,或者我必须在 SSJS 中调用函数时提供对象,因为现在我收到错误消息:
执行 JavaScript 操作表达式时出错脚本解释器错误,行 = 2,列 = 38:找不到 Java 类“org.acme.projectx.test.ApplicationValidators”上的 Java 方法“valPhone()”
当我应用对象时,例如
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。 java 类 'org.acme.projectx.test.ApplicationValidators' 电话上的 lang.String)' 无效
电话无效是我在 ValidatorExeption 中抛出的 FacesMessagge 中包含的字符串消息。
解决方案
我会采取完全不同的方法:
- 创建页面控制器类
- 单击按钮时调用控制器中的方法
- 根据您在该方法中的值进行验证
- 如果验证失败,则在验证错误堆栈中创建一条消息
我现在没有参考资料,但这通常更容易编程和控制。
推荐阅读
- c# - 加载 DLL 时出错(认为缺少 VC++ 运行时)
- python - 在 sns.kdeplot 中获得第 80 个百分位
- javascript - 从 HTML 到 VUE 的脚本 - 单击时更改背景颜色
- javascript - forEach 循环以错误的顺序返回一些项目
- php - Woocommerce 隐藏添加到购物车按钮,可变产品除外
- delphi - 如何在没有第三方包的情况下在 Delphi 中应用简单的 XOR 加密/解密机制?
- android - 如何在 Retrofit 的 GET 方法中使用变量?
- elasticsearch - 如何修复集成网关:没有从 Peoplesoft 中的网关 (158,10829) 收到响应
- java - 未找到 json-simple.jar
- flutter - Flutter:如何从导航中正确返回?