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;

部分的な更新をトリガーした現在のフィールドの名前と、それが含まれているフォームを見つけたいと考えています。フィールドとフォームの両方の要素は、アプリケーションの内部にあります。それらの名前は、次のように 2 つのイベント パラメータに入れられます。

<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 に答える