0

すべての製品を JavaServer ページの表に印刷したいのですが、jstl コードに問題があります。

私のモデル製品:

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

My JavaBean products: (この 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

レガシー 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>代わりに使用することを検討しましたか? <table>緩い HTML 、<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 に答える