运行我的应用程序时收到以下错误:
<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>
我正在尝试将数组中的元素返回到视图中,其中“theImage”是person类中的数组。
答案 0 :(得分:17)
<f:ajax>
标记只能直接嵌套在实现UIComponent
接口的ClientBehaviorHolder
中。 <ui:repeat>
不是其中之一。
单击javadoc链接,它会告诉您:
所有已知的实施类:
HtmlBody,HtmlCommandButton,HtmlCommandLink,HtmlDataTable,HtmlForm控件,HtmlGraphicImage,HtmlInputSecret,的HtmlInputText,HtmlInputTextarea,HtmlOutcomeTargetButton,HtmlOutcomeTargetLink,HtmlOutputLabel,HtmlOutputLink,HtmlPanelGrid,HtmlSelectBooleanCheckbox,HtmlSelectManyCheckbox,HtmlSelectManyListbox,HtmlSelectManyMenu,HtmlSelectOneListbox,HtmlSelectOneMenu,HtmlSelectOneRadio
从你的问题不清楚你的意图是什么,所以我不能给出一个更具体的答案,而不是建议在这种情况下摆脱<f:ajax>
。它不属于那里。也许你想把它直接放在<h:commandButton>
(类型为HtmlCommandButton
)中,但是你需要更改change
事件,因为它对{<input type="submit">
没有意义。 1}}由<h:commandButton>
生成。
我认为您还想将<ui:repeat>
移出<h:commandButton>
,因为这也没有多大意义。把它放在<h:commandButton>
旁边,而不是嵌套在里面。