

org.apache.commons.beanutils.WrapDynaBeanを継承したラッパーBeanでBeanをラップし、h:dataTableで表示したいです。

以下のコードではWrapperBeanからTestBeanのvalueを参照できないのでjavax.el.PropertyNotFoundExceptionが発生してしまいます。解決策はあるでしょうか？

**ラッパーBean**

[code]

    public class WrapperBean extends WrapDynaBean{
        // テーブルのNo
        private int no;
    
        // setter, getter...
    }
    
[/code]

**ラップされるBean**

[code]

    public class TestBean{
        private String value;
    
        // setter, getter...
    }
    
[/code]

**管理Bean**

[code]

    public class TestController{
    
        private List<WrapperBean> wbList;
    
        @PostConstract
        private void init(){
            // テーブルの内容を保持したTestBeanをラップする。
            wbList.add(new WrapperBean(new TestBean("hoge"));
            wbList.add(new WrapperBean(new TestBean("huga"));
            wbList.add(new WrapperBean(new TestBean("piyo"));
        }
    }
    
[/code]

**test.xhtml**

[code]

    <h:dataTable value="#{testController.wbList}" var="row"
        <h:column>
            <h:outputText value="#{row.no}"/>
        </h:column>
    
        <h:column>
            <h:outputText value="#{row.value}"/>
        </h:column>
    </h:dataTable>
    
[/code]


CC BY-SA 3.0
2016-02-15T16:54:01.790
22122
2016-04-16T04:48:38.093
9577
question
java java-ee jsf
WrapDynaBeanをJSFで使用したい


test.xhtmlを下記のように書き換えれば出力されます。

[code]

    <h:dataTable value="#{testController.wbList}" var="row">
        <h:column>
            <h:outputText value="#{row.no}"/>
        </h:column>
    
        <h:column>
            <h:outputText value="#{row.get('value')}"/>
        </h:column>
    </h:dataTable>
    
[/code]


CC BY-SA 3.0
2016-02-16T03:58:56.653
22148
2016-02-16T03:58:56.653
10724
22122
answer