我正在尝试更新元素" 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;前面,但这并不能给我任何不同的结果。
我该如何解决这个问题?
答案 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。