3

ActionListener メソッドには次の署名が必要であるという投稿を読み続けています。

public void calledByActionListener(ActionEvent e) {
}

次のように呼び出されます。

<p:commandButton value="Example" id="example" process="@this" ajax="false" 
    actionListener="#{exampleBean.calledByActionListener()}">

ただし、次のような引数なしのメソッドがあります。

public void calledByActionListener() {
}

何か変わった?

4

1 に答える 1

4

はい、これはカスタム引数でメソッドを呼び出す新しいEL 2.2機能です。基本的に、引数のないメソッドを明示的に呼び出しています。この構造は合法です。

これは JSF2 とは関係ないことに注意してください。EL 2.2 は、たまたま Java EE 6 の一部であり、JSF2 と同様です。つまり、新しい JSF2 機能のように見えます。しかし、実際にはそうではありません。証拠として、JSF2 は Java EE 5 と下位互換性があるため、EL 2.1 を意味しますが、この構造はそこでは機能しません。

メソッド式でカスタム引数を明示的に指定しない場合、JSF は仕様に従ってActionEvent、実際のメソッドのデフォルト引数を想定します。

于 2013-01-17T15:56:02.457 に答える