【发布时间】:2012-12-18 18:05:54
【问题描述】:
当我点击页面时,我的 JSF 托管 bean 没有被构造。
这是我的小脸:
<h:dataTable value="#{productsBean.producten}" var="product">
<h:column>#{product.description}</h:column>
<h:column>#{product.price}</h:column>
<h:column>#{product.categoryName}</h:column>
<h:column>
<h:link value="Edit" outcome="/products/edit">
<f:param name="id" value="#{product.product_id}"/>
</h:link>
</h:column>
</h:dataTable>
这是我的 ProductsBean:
@ManagedBean(eager=true)
@RequestScoped
public class ProductsBean implements Serializable{
private List<ProductBean> producten; //+getter
@ManagedProperty(value = "#{applicationBean}")
private ApplicationBean applicationBean;
public ProductsBean() {
Store store = applicationBean.getStore();
for (String c : store.getCategories()) {
for(be.kdg.shop.model.stock.Product p : store.getProductsOfCategory(c)){
ProductBean product = new ProductBean();
product.setProduct_id(p.getProduct_id());
product.setDescription(p.getDescription());
product.setCategoryName(p.getCategoryName());
product.setPrice(p.getPrice());
producten.add(product);
}
}
....
当我使用“#{productsBean.producten}”时,我的 JavaBean 应该被初始化,但它没有。 当我调试我的代码时,我没有到达构造函数。
【问题讨论】:
-
在浏览器中右键单击页面并执行查看源代码。你看到了什么?您看到的是 JSF 生成的 HTML 代码,还是仍然看到原始的 JSF 源代码?
-
我看到的仍然是原始 JSF 源代码。
-
我发布了一个答案。我还在问题中将您过于笼统的术语“javabean”编辑为更特定于 JSF 的“托管 bean”。普通的 Java EE Web 应用程序中有很多不同种类的 javabean。
标签: jsf jsf-2 managed-bean