0

同様の問題がここで数回発表されたことは知っていますが、多くの時間を費やしましたが、そのコードが機能しない理由はまだわかりません:/

これは私のJSFページです:

<h:form>
<h:selectOneMenu value="#{productBean.productName}">
    <f:selectItems value="#{productBean.products}" var="c" itemValue="#{c.name}"/>
</h:selectOneMenu>
</h:form>

これは私のproductBeanです:

public class ProductBean extends Connector
{
    private List<Product> products;
    private Product product;
    private String productName;
    //setters and getters
    public List<Product> getProducts() throws SQLException
    {
        resultSet = statement.executeQuery("SELECT * FROM dbo.products");
        products = new ArrayList<Product>();
        while(resultSet.next())
        {
            product = new Product();
            product.setId_product(resultSet.getInt("id_product"));
            product.setName(resultSet.getString("name"));
            product.setCategory(resultSet.getInt("category_id"));
            product.setIs_available(resultSet.getInt("is_available"));
            products.add(product);
        }
        return products;
    }
}

そして最後に製品クラス:

public class Product 
{
    private int id_product;
    private String name;
    private int price;
    private int category;
    private int is_available;
    /setters and getters
}

私の目標は、製品名を含むメニュー リストを作成することです。展開されたリストにあるのは参照だけです。また、Bean クラスですべてを宣言し、ArrayList の代わりに ArrayList を作成しようとしましたが、うまくいかないと思います。とにかくうまくいきませんでした。

正しく理解しているかどうか教えてください。productBean.productName はある種のホルダーです。productBean.products は Products リスト全体であり、 c.name は、実際の製品の名前のみが必要であることを意味します。

4

1 に答える 1