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