1

カスタムコントロール内のボタンをクリックすると実行されるカスタムコントロールにjavascriptコード(サーバー側とクライアント側)を渡す必要があります。

このために、メソッドバインディングエディターとしてcodessjsタイプとエディターを使用して、カスタムコントロールにプロパティを作成しました。javax.faces.el.MethodBindingボタンをクリックすると(カスタムコントロール内)、次のようなコードを書きました:

compositeData.codessjs.invoke(facesContext, null)

'compositeData.codessjs' is nullしかし、XPage ソースにコードが存在するにもかかわらず、エラーがスローされます。コードを実行するにはどうすればよいですか?

クライアント側の JavaScript コードの場合、カスタム コントロール プロパティでエディタを見つけることができますがClient side script editor、プロパティのタイプは何ですか? また、カスタム コントロールで csjs コードを実行するにはどうすればよいですか?

4

2 に答える 2

5

この方法でメソッド バインディングを使用する場合は、カスタム コントロールのパラメーターとしてメソッド バインディングを作成する必要があります。

<xc:ccMethod>
   <xc:this.codessjs>
      <![CDATA[#{javascript:
         var app = facesContext.getApplication();
         app.createMethodBinding("#{javascript:print('HELLO!');}", null);
       }]]>
   </xc:this.codessjs>
</xc:ccMethod>

次に、カスタム コントロール内のボタンでメソッドを呼び出すことができます。この場合、ボタンはHELLO!を出力します。サーバーコンソールに。

編集:
CSJS プロパティの型は文字列です。CSJS コードを実行するには、カスタム コントロールのボタンを次のように変更します。

<xp:button value="Label" id="button1">
   <xp:eventHandler event="onclick" submit="false">
      <xp:this.script><![CDATA[#{javascript:compositeData.codecsjs}]]></xp:this.script>
   </xp:eventHandler>
</xp:button>

XPage では、カスタム コントロール プロパティを次のように入力できます。

<xc:ccCSJS>
   <xc:this.codecsjs>
      <![CDATA[alert("ABC");]]>
   </xc:this.codecsjs>
</xc:ccCSJS>

お役に立てれば

スヴェン

于 2012-04-24T09:52:24.200 に答える
0

JavaScript eval 関数を試しましたか? serverSide JS で動作します。

于 2012-05-02T05:47:12.703 に答える