は、カスタムのUIComponent(テスト目的のみ)考えてみましょう:JSF 2.0:encodeAllはいつ呼び出され、encodeBeginはいつ呼び出されますか?
public class UITest extends UIComponentBase {
@Override
public void encodeBegin(FacesContext context) throws IOException {
System.out.println("encodeBegin");
}
@Override
public void encodeAll(FacesContext context) throws IOException {
System.out.println("encodeAll");
}
}
を私は複合コンポーネント内のページに追加すると、encodeBegin()
メソッドが呼び出されます。ただし、コンポジットコンポーネント外のページに追加する場合は、代わりにencodeAll()
メソッドが呼び出されます。
他のUIComponent内でそれを追加することで、コンポジットコンポーネントラッパーだけが動作を変更するように見えます。
なぜそうであるの情報が見つかりませんでしたか?仕様へのリンク? 。 は、「これらのメソッドはリクエスト処理ライフサイクルのレスポンスのレンダリング・フェーズ中に呼び出されencodeAll()がtrueを返すこのコンポーネントとそのすべての子とファセットを引き起こし ます:
これはかなりわかりました。振る舞いはちょっと複雑で、奇妙なことではないにしても:)これについてのバグを報告するには時間を費やしていただきありがとうございます:) –
[こちら](http://java.net/jira/browse)のバグが報告されています/ JAVASERVERFACES-1875)。 – Lucas