【问题标题】:Update component outside of h:form - ComponentNotFoundException [duplicate]更新 h:form 之外的组件 - ComponentNotFoundException [重复]
【发布时间】:2016-08-24 20:32:20
【问题描述】:

我正在尝试从这样的表单内的按钮更新我的 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>

但是,这样我只剩下一个 ComponentFoundException,告诉我找不到该组件:

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

我已经阅读了一些关于 SO 的内容,我找到了一个解决方案,建议在“entryDiv”前面放置一个:,但这并没有给我带来任何不同的结果。

我该如何解决这个问题?

【问题讨论】:

    标签: jsf primefaces xhtml


    【解决方案1】:

    如果不是 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。

    【讨论】:

    • 感谢您的帮助!可悲的是,即使在将我的 div 替换为 panelGroup 之后,我仍然遇到错误
    • @Sossenbinder 在这种情况下你需要添加:
    • 我也是这么想的,但即使这样也不会改变任何事情:(“entryDiv”-panelGroup 的父元素有什么意义吗?
    • @Sossenbinder 在按钮下方有这个标签&lt;/div&gt; 可以吗?
  • 我自己修复了这个错误。这段代码中没有显示我自己的愚蠢,抱歉:) 你的答案是正确的
  • 猜你喜欢
    • 2011-05-07
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    相关资源
    最近更新 更多