循环来自javabean的属性

时间:2013-01-03 17:05:11

标签: java jsf jsf-2 jstl javabeans

我想在JavaServer页面上的表格中打印我的所有产品,但是我的jstl代码有问题。

我的型号产品:

public final class Product
{
    private int id;
    private String description;    
    private Double price;    
    private String categoryName;
...

我的JavaBean产品: (当创建这个bean时,它会填充我模型中的产品)

@ManagedBean(name = "productsBean")
@RequestScoped
public class Products implements Serializable {

    private List<Product> producten;
    @ManagedProperty(value = "#{applicationBean}")
    private ApplicationBean applicationBean;

    public Producten() {

        Store store = applicationBean.getStore();

    for (String c : store.getCategories()) {
        for(model.Product p : store.getProductsOfCategory(c)){
            beans.Product product = new Product();
            product.setId(p.getId());
            product.setDescription(p.getDescription());
            product.setCategoryName(p.getCategoryName());
            product.setPrice(p.getPrice());
        producten.add(product);
        }

    }                
    }

我的JavaBean产品:

@ManagedBean(name= "productBean")
@RequestScoped
public class Product implements Serializable{

    @ManagedProperty(value = "#{applicationBean}")
    private ApplicationBean applicationBean;

     private int product_id;
    private String description;    
    private Double price;    
    private String categoryName;

在我的JavaServer页面中,我想要这样的东西,但是:

            <c:forEach var="product" items="${productsBean.products}">
                <tr>
                    <td>${product.description}</td>
                </tr>
            </c:forEach>

2 个答案:

答案 0 :(得分:0)

遗留JSP表达式${}如果在作用域中不存在,则不会自动创建JSF托管bean。您需要JSF表达式#{}。更重要的是,您应该停止使用JSF页面中的旧JSP表达式${},以避免将来出现混淆和维护问题。 JSF表达式#{}完全相同(即自动创建JSF托管bean并通过输入组件设置模型值)。

<table>
    <c:forEach var="product" items="#{productsBean.products}">
        <tr>
            <td>#{product.description}</td>
        </tr>
    </c:forEach>
</table>

另见:


对具体问题

无关,您是否考虑过使用<h:dataTable>?它可以避免摆弄松散的HTML <table><tbody><tr><th><td>标记。

<h:dataTable value="#{productsBean.products}" var="product">
    <h:column>#{product.description}</h:column>
</h:dataTable>

另见:

答案 1 :(得分:-1)

您是否导入了jsf jsf core和html

的TLD文件
<f:view>
<h:form>
<h:dataTable value="#{productsBean.products}" var="product">
<h:column>#{product.description}</h:column>  
</h:dataTable>

   

试试这样 感谢