0

我有一个托管 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 变量。

4

1 回答 1

0

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

1.你可以做一些延迟加载:

看法 :

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

豆 :

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>

豆 :

// 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;
    }
}
于 2013-06-01T21:22:59.093 回答