0

我从 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() 的调用从不返回任何内容!更准确地说:代码执行停止,我还不知道确切的错误(我承认这并不完全准确)。

如何获取这些参数?

蒂亚!

4

1 回答 1

0

查看 Mastering XPages 中的代码,在 eventHandler 的 SSJS 代码中访问 eventHandler 参数值的方法只是将name属性引用为变量。例如print(formName + ": " + fieldName)

于 2015-02-23T13:26:24.980 回答