1

マイページ表示一覧 カテゴリ名。ユーザーがカテゴリ名をクリックすると、カテゴリ名ごとにリスト製品が表示されます。このコードでは、CateogryId を h:inputHidden の値として渡したいと考えています。と同じ<h:inputText value="#{produtBean.categoryId}"></h:inputText>です。

読んでくれてありがとう!

xhtml からのコード

<ui:repeat value="#{productBean.listCategory}" var="c">
   <h:form>
        <h:inputHidden value="#{productBean.categoryId}" ></h:inputHidden>
        <h:commandLink value="#{c.name}" action="#{productBean.listProductByCt}" ></h:commandLink>
   </h:form>
</ui:repeat>

ProductBean からのコード

public String listProductByCt()
    {
        if(categoryId==0)
        {
            return "index";
        }
        listProduct = new ProductsDB().listProducts(categoryId);
        return "product";
    }  
4

1 に答える 1

1

その<h:inputHidden>ようには機能しません。あなたがそれに「渡そうとした」値もちょっと変です。リストのすべての項目で同じ値です。<f:param>代わりに使用する必要があります。また、代わりに#{c.id}orを渡したい場合もあります。#{c.name}

<h:commandLink value="#{c.name}" action="#{productBean.listProductByCt}">
    <f:param name="categoryId" value="#{c.id}" />
</h:commandLink>

@ManagedProperty("#{param.categoryId}")
private Integer categoryId; // +setter

または、すでに Servlet 3.0 / EL 2.2 を使用している場合は、それをメソッド引数として渡すことができます。

<h:commandLink value="#{c.name}" action="#{productBean.listProductByCt(c.id)}">

public String listProductByCt(Integer categoryId) {
    // ...
}

以下も参照してください。

于 2012-09-15T12:54:26.550 に答える