0

我想在 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 Page 我想要这样的东西,但是:

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

2 回答 2

0

如果作用域中尚不存在 JSF 托管 bean,则旧版 JSP 表达式${}不会自动创建它们。您需要 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>

也可以看看:

于 2013-01-03T17:10:48.970 回答
-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>

试试这样谢谢

于 2013-01-04T10:46:11.970 回答