如何更新/渲染

时间:2013-09-29 13:28:07

标签: jsf

我得到了一个列表,其中显示的步骤如下:

<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组件。

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

1 个答案:

答案 0 :(得分: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" />