首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这里需要在托管Bean中显式地创建ArrayList的实例?

为什么这里需要在托管Bean中显式地创建ArrayList的实例?
EN

Stack Overflow用户
提问于 2014-12-15 18:27:58
回答 1查看 237关注 0票数 1

考虑:

代码语言:javascript
复制
<h:body>
        <h:dataTable value="#{integerListEntriesBean.racePlacement}" var="placement">
            <h:column>
                <h:outputText value="#{placement}" />
            </h:column>
        </h:dataTable>
</h:body>

The ManagedBean:

代码语言:javascript
复制
public class IntegerListEntriesBean {

    // Notice carefully here just an object reference of type List<> exists
    private List<Integer> racePlacement;


    public List<Integer> getRacePlacement() {
        return racePlacement;
    }

    public void setRacePlacement(List<Integer> racePlacement) {
        this.racePlacement = racePlacement;
    }

}

faces中的条目-config.xml:

代码语言:javascript
复制
    <managed-bean>
        <managed-bean-name>integerListEntriesBean</managed-bean-name>
        <managed-bean-class>com.jsf.ch5.IntegerListEntriesBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>racePlacement</property-name>
            <property-class>java.util.List</property-class>
            <list-entries>
                <value-class>java.lang.Integer</value-class>
                <value>30</value>
                <value>10</value>
                <value>50</value>
                <value>40</value>
                <value>20</value>
            </list-entries>
        </managed-property>
    </managed-bean>

O/P:

代码语言:javascript
复制
30 
10 
50 
40 
20

当然,这在内部发生了一些事情:List racePlacement = new ();

现在,如果我稍微修改一下ManagedBean,以便将元素添加到构造器内的ArrayList

代码语言:javascript
复制
public class IntegerListEntriesBean {
    // Notice carefully here I had to explicitly create an object here.
    private List<Integer> racePlacement = new ArrayList<Integer>();
    public IntegerListEntriesBean(){
        racePlacement.add(500);
        racePlacement.add(600);
    }

    public List<Integer> getRacePlacement() {
        return racePlacement;
    }

    public void setRacePlacement(List<Integer> racePlacement) {
        this.racePlacement = racePlacement;
    }

}

O/P现在:

代码语言:javascript
复制
500 
600 
30 
10 
50 
40 
20 

由于对象( internally(meaning ArrayList<>())是手动创建的,而不是由me创建的),为什么需要显式地在ManagedBean now中创建对象(在第二种情况下E 229)?i.e

代码语言:javascript
复制
List<Integer> racePlacement = new ArrayList<Integer>();
EN

回答 1

Stack Overflow用户

发布于 2014-12-15 18:48:59

这是必要的,因为构造函数是在faces-config处理器之前执行的。racePlacement必须是支持'add‘方法的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27490650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档