我組裝這段代碼從零部件各地的XPages社區,你可能認識的幾個:搜索中使用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!
我有點困惑:你的*字段*如何進行部分刷新? – 2015-02-23 12:37:15
我可以建議的最好的事情是通過調試確認,使用$$ xspsubmitid確實會爲您提供觸發事件的組件的eventHandler。我認爲submitId實際上是HTML表單的ID,而不是觸發刷新的組件,儘管我可能是錯的。此外,綁定動態可能無法在restoreView中工作。 – 2015-02-23 13:24:11
@Sven:我的領域就像一個廣播組,複選框,下拉列表等,可以觸發部分刷新。所有字段都是動態創建的,它們的定義在Notes文檔中,並且它們一起用作表單。在頁面上可以有多種表單,我想知道哪些表單觸發了刷新(因此我不必重新計算其他表單上的字段)。 – 2015-02-23 16:37:34