我从XPages社区的各个部分组装了这段代码,您可能会认识到一些:
var submitId= param.get( '$$xspsubmitid');
var component:com.ibm.xsp.component.xp.XspEventHandler= PageData.getComponentByClientId(submitId, view);
dprint("id= " + component.getClass().toString())
var params= component.getParameters();
for(var x:com.ibm.xsp.complex.Parameter in params) {
dprint(x);
dprint(x.getName());
dprint(x.getValue());
}
PageData是一个托管bean,getComponentByClientId正如它所说的那样;它的代码,为了完整性'缘故:
public UIComponent getComponentByClientId(String id, UIComponent root) {
UIComponent component= new XspQuery().byClientId(id, root);
return component;
}
至于XspQuery:
package org.openntf.xsp.extlib.query;
我想找到触发部分更新的当前字段的名称及其所在的表单。元素,字段和表单都是我的应用程序的内部。它们的名称放在两个事件参数中,如下所示:
<xp:this.parameters>
<xp:parameter name="formName" value="#{javascript:compositeData.formName}"></xp:parameter>
<xp:parameter name="fieldName" value="#{javascript:compositeData.fieldName}"></xp:parameter>
</xp:this.parameters>
问题是:当我将此代码放在afterRestoreView,beforeRenderResponse或afterRenderResponse之后的一个页面事件中时,参数的名称被正确打印,但是对getValue()的调用永远不会返回任何内容!更准确地说:代码的执行停止了,我还不知道确切的错误(我承认,这并不完全准确)。
如何获取这些参数?
TIA!
答案 0 :(得分:0)
查看Mastering XPages中的代码,在eventHandler的SSJS代码中访问eventHandler参数值的方法只是将name
属性作为变量引用。例如print(formName + ": " + fieldName)