运行我的应用程序时收到以下错误:

<f:ajax> Unable to attach <f:ajax> to non-ClientBehaviorHolder parent

我的JSF:
    <h:commandButton id="submitschool" action="submit" value="Get templates" style="FONT-SIZE: medium;FONT-FAMILY: 'Rockwell';width : 128px; height : 24px;">
    <ui:repeat value="#{person.theImage}" var="item">
    <f:ajax event="change" render="image" />
    <h:graphicImage id="image" value="#{item}"/>
    </ui:repeat>
    </h:commandButton>

我正在尝试将数组中的元素返回到 View ,其中“theImage”是person类中的数组。

最佳答案

<f:ajax> 标签只能直接嵌套在实现 UIComponent 接口(interface)的 ClientBehaviorHolder 中。 <ui:repeat> 不是其中之一。
单击javadoc链接,它显示以下内容:

从您的问题尚不清楚您的意图是什么,因此除了在这种情况下建议摆脱<f:ajax>之外,我无法提供更具体的答案。它不属于那里。也许您打算将其直接放在 <h:commandButton> (类型为 HtmlCommandButton )内,但是随后您需要更改change事件,因为它对<input type="submit">生成的<h:commandButton>没有意义。
我认为您也想将<ui:repeat><h:commandButton>中移出,因为这样做也没有多大意义。将其放在<h:commandButton>旁边,而不是嵌套在其中。

10-08 17:09