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

Sos*_*der 0 xhtml jsf primefaces

我试图从像这样的窗体内的按钮更新我的xhtml中的元素"entryDiv":

<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>
Run Code Online (Sandbox Code Playgroud)

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

Cannot find component for expression "entryDiv" referenced from "form:myForm:j_idt25".
Run Code Online (Sandbox Code Playgroud)

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

我怎么能解决这个问题?

rav*_*ven 7

如果它不是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>
Run Code Online (Sandbox Code Playgroud)

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