2

我得到了一个包含如下步骤的列表:

<ul >
    <for:forEach id="steps" items="#{RecipeBean.recipe.steps}" var="step">
        <li>  <com:Step description="#{step.stepDescription}"/></li>
    </for:forEach>
</ul>
<p:commandButton id="addstep" value="#{msg['step.add']}" action="#{RecipeBean.addStep}" update="steps" />

按钮 addStep 将 Step 添加到 RecipeBean.recipe.steps 集合。现在应该显示新添加的步骤。但就像那样,我收到错误消息无法找到从“j_idt8:addstep”引用的标识符“steps”的组件,这可能是 for:forEach 组件。

那么有人知道我该如何解决这个问题吗?


组件的update属性<p:commandButton>应该指向一个组件。由于<for:forEach>不是组件,而是标记处理程序,因此您会收到一条错误消息。

我建议您查看现有的 PrimeFaces 组件,例如DataList,它以无序格式显示对象列表。

然后,您可以按如下方式重构代码:

<p:dataList id="steps" items="#{RecipeBean.recipe.steps}" 
            var="step" itemType="disc">
    <com:Step description="#{step.stepDescription}" />
</p:dataList>
<p:commandButton id="addstep" value="#{msg['step.add']}" 
                 action="#{RecipeBean.addStep}" update="steps" />
4

1 回答 1

2

组件的update属性<p:commandButton>应该指向一个组件。由于<for:forEach>不是组件,而是标记处理程序,因此您会收到一条错误消息。

我建议您查看现有的 PrimeFaces 组件,例如DataList,它以无序格式显示对象列表。

然后,您可以按如下方式重构代码:

<p:dataList id="steps" items="#{RecipeBean.recipe.steps}" 
            var="step" itemType="disc">
    <com:Step description="#{step.stepDescription}" />
</p:dataList>
<p:commandButton id="addstep" value="#{msg['step.add']}" 
                 action="#{RecipeBean.addStep}" update="steps" />
于 2013-09-29T15:19:01.063 回答