Я получаю следующую ошибку при запуске моего приложения:
<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.
Тег
может быть непосредственно вложен только в UIComponent
который реализует ClientBehaviorHolder
интерфейс.
не является одним из них.
Нажмите на ссылку javadoc, она сообщает следующее:
Все известные реализующие классы:
HtmlBody, HtmlCommandButton, HtmlCommandLink, HtmlDataTable, HtmlForm, HtmlGraphicImage, HtmlInputSecret, HtmlInputText, HtmlInputTextarea, HtmlOutcomeTargetButton, HtmlOutcomeTargetLink, HtmlOutputLabel, HtmlOutputLink, HtmlPanelGrid, HtmlSelectBooleanCheckbox, HtmlSelectManyCheckbox, HtmlSelectManyListbox, HtmlSelectManyMenu, HtmlSelectOneListbox, HtmlSelectOneMenu, HtmlSelectOneRadio
Из вашего вопроса не ясно, каковы ваши намерения, поэтому я не могу дать более конкретный ответ, чем рекомендация избавиться от
в данном контексте. Ему там не место. Возможно, вы хотели поместить его непосредственно внутрь
(который имеет тип HtmlCommandButton
), но тогда вам нужно изменить событие change
, поскольку оно не будет иметь смысла на , генерируемом
.
Я думаю, вы также хотели бы переместить
из
, поскольку это также не имеет особого смысла. Поместите его рядом с
вместо того, чтобы вкладывать в него.