かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

JSFの情報を取りたい

ManagedBean以外からJSFに関する情報にアクセスしたくなったのでメモ。

UIViewRoot root = FacesContext.getCurrentInstance().getViewRoot();
System.out.println("root.id:[" + root.getId() + "]");
System.out.println("root.clientId:[" + root.getClientId(getFacesContext()) + "]");
System.out.println("root.family:[" + root.getFamily() + "]");
System.out.println("root.viewId:[" + root.getViewId() + "]");

実行結果

root.id:[null]
root.clientId:[_id0]
root.family:[javax.faces.ViewRoot]
root.viewId:[/Page1.jsp]

getChildrenで再帰的に辿って行けば全てのコンポーネントを走査も出来る。