更新h:form之外的组件 - ComponentNotFoundException

时间:2016-04-29 15:37:56

标签: jsf primefaces xhtml

我正在尝试更新元素" entryDiv"在我的xhtml中,来自这样一个表单内的按钮:

<div id="entryDiv">    
    <div>                              
        <h:form id="myForm">
            <c:forEach items="#{foodPlanManagementBean.loadRestaurantsHistory()}" var="restaurantHistoryEntry">
                    <p:commandButton value="MyName" update="entryDiv"/>
            </c:forEach>
        </h:form>
    </div>

    Some more unrelated elements here...
</div>

但是,这样我剩下的就是一个ComponentFoundException,告诉我无法找到该组件:

Cannot find component for expression "entryDiv" referenced from "form:myForm:j_idt25".

我已经阅读了一些关于SO的内容,我找到了一个解决方案,建议将:放在&#34; entryDiv&#34;前面,但这并不能给我任何不同的结果。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

如果它不是JSF组件,JSF无法看到div的id,因此您需要将div转换为h:panelGroup

 <h:panelGroup id="entryDiv" layout="block">
     <div>                              
        <h:form id="myForm">
            <c:forEach items="#{foodPlanManagementBean.loadRestaurantsHistory()}" var="restaurantHistoryEntry">
                    <p:commandButton value="MyName" update=":entryDiv"/>
                </div>
            </c:forEach>
        </h:form>
    </div>
  </h:panelGroup>

如果你不放layout="block"它会渲染一个跨度而不是一个div。