かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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で再帰的に辿って行けば全てのコンポーネントを走査も出来る。