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