在jsf中设置属性的数据

时间:2013-06-01 20:36:27

标签: java jsf jsf-2

我有一个托管bean页面和一个变量:idCate

public int idCate;

public int getIdCate() {
    return idCate;
}

public void setIdCate(int idCate) {
    this.idCate = idCate;
}

我有xhtml页面:

<ui:repeat value="#{categoriesBean.allcate}" var="Cate">
    <ul class="leftm">
        <li>
            <a href="#" class="tit">
                <h:outputText value="#{Cate.categoryname}" />
            </a>
        </li>                         
        <!-- I want set value for idCate. ex:  categoriesBean.idCate = 1 -->
        <ui:repeat value="#{categoriesBean.listSubcate}" var="subCate">
            <li><a href="#">- #{subCate.categoryname}</a></li>
        </ui:repeat>
    </ul>
</ui:repeat>

如何将值设置为idCate变量。我想在我的bean页面中使用idCate变量。

1 个答案:

答案 0 :(得分:0)

根据评论中的讨论,有两种方式

<强> 1。你可以做一些延迟加载:

查看:

<ui:repeat value="#{categoriesBean.getListSubcate(Cate)}" var="subCate">
    <li><a href="#">- #{subCate.categoryname}</a></li>
</ui:repeat>

Bean:

public List<SubCate> getListSubcate(Cate cate)
{
    return // Your business logic from cate.getIdCate() ...
}

<强> 2。或者您可以在之前准备整个列表:

查看:

<ui:repeat value="#{Cate.subCates}" var="subCate">
    <li><a href="#">- #{subCate.categoryname}</a></li>
</ui:repeat>

Bean:

// Add a list of subCates inside your Category class
public class Cate
{
    private List<SubCate> subCates;

    public void setSubCates(List<SubCate> subCates)
    {
        this.subCates = subCates;
    }

    public List<SubCate> getSubCates()
    {
        return this.subCates;
    }
}

您应该在类别之后或同时初始化子类别。我强烈建议采用第二种方式,因为您的getter将被多次调用,因此您不会每次都重新创建数据。必须在bean构造函数或@PostConstruct方法中初始化所有数据。

public CategoriesBean
{
    private List<Cate> allCate;

    public CategoriesBean()
    {
        // Initialize allCate here
    }

    @PostConstruct
    public void init()
    {
        // Or here
    }

    public List<Cate> getAllCate()
    {
        // Or here
        if(allCate == null)
        {
            this.allCate = ...
        }

        return this.allCate;
    }
}