从a为每个设置h:selectOneMenu的值

时间:2012-01-16 13:37:28

标签: java jsf-2 jstl

这是每个迭代产品列表的,我需要在下面的下拉列表中设置productGroupId。

 <c:forEach items="${productgroup.productList}" var="product">

 <h:selectOneMenu  value="${product.appleProdgroupId}">
<f:selectItems value="#{displayProductsBean.productGroupListDropDown}"/>
</h:selectOneMenu>

我尝试了所有组合,但它不起作用......任何人都可以请帮助

1 个答案:

答案 0 :(得分:0)

目前还不清楚你的意思是“它不起作用”。在到目前为止发布的代码中,我看到至少3个可能的原因:

您的第一个问题是,您需要使用#{}语法而不是${}语法,以便能够自动创建托管bean(如果它们在范围内不存在)。

<c:forEach items="#{productgroup.productList}" var="product">
    <h:selectOneMenu value="#{product.appleProdgroupId}">
        <f:selectItems value="#{displayProductsBean.productGroupListDropDown}" />
    </h:selectOneMenu>
</c:forEach>

您的第二个问题可能是<c:forEach>,但这取决于运行此代码的上下文。 <c:forEach>是视图构建时间标记。如果上述方法无效,则需要<ui:repeat>

<ui:repeat value="#{productgroup.productList}" var="product">
    <h:selectOneMenu value="#{product.appleProdgroupId}">
        <f:selectItems value="#{displayProductsBean.productGroupListDropDown}" />
    </h:selectOneMenu>
</ui:repeat>

如果仍然无效,那么您需要附上<h:messages/>以了解任何遗漏的转化/验证错误。

<h:messages />

例如,在表单提交请求期间未正确(预)初始化<f:selectItems>后面的列表时,您可以获得“值无效”验证错误。

另见: