- - PR -
JSF:子コンポーネントに値を渡す方法について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-03 15:57
dataTableタグなどで利用されている
var="item" value="#{itemList}" などの属性記述を使い子のコンポーネントから <h:outputText value="#{item.name}"/> 等というようにアクセスしたいために カスタムコンポーネントを利用したいのですが どのように記述すればよいのかがわかりません 今現在やっていることは dataTableに相当するmyListCompタグで <my:myListComp value="#{itemList}"> <h:outputText value=""/> </my:myListComp> というように書いておいて myListのレンダラクラスのencodeChildrenメソッド内で //引数:FacesContext ctx //引数:UIComponent comp UIMyListComp myListComp=(UIMyListComp)comp; java.util.List list = (java.util.List)myListComp.getValueBinding("value").getValue(ctx); UIOutput outText=(UIOutput)myList.getChildren.get(0); for(int i=0;i<list.size();i++){ outText.setValue(((MyBean)list.get(i)).getName()); outText.encodeBegin(ctx); outText.encodeChildren(ctx); outText.encodeEnd(ctx); } というようにしているのですが <h:outputText value=""/> ↑このように必須項目なので、空にしておかないといけないのが気持ち悪いです var="item" value="#{itemList}" としたときにこのitemの値を#{itemList}の1番目、2番目というように 順番にバインドしたいのですが この方法がわかりません 教えてください |
|
投稿日時: 2004-11-22 14:43
こんにちは.亀レスですが,
for文の中で, getFacesContext().getExternalContext().getRequestMap().put(var, getRowData()) のようなことをすれば良いと思います. UIDataはこれをやっています. カスタムコンポーネントを全部自作するのではなく,UIDataのようなものをスーパークラスにして作るのが賢いと思いますよ. |
1