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 回答