搜索XPages事件参数

时间:2015-02-23 09:46:40

标签: java xpages managed-bean ssjs

我从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!

1 个答案:

答案 0 :(得分:0)

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