У меня есть составной компонент, который в основном состоит из компонента selectManyCheckbox. Как следует проектировать в общем виде я прохожу в selectItems, Аякс обработки и т.д. от уровня вызова с использованиемКак ссылаться на компонент внутри составного компонента при использовании преобразователя
<composite:insertChildren/>
Это работает очень хорошо для большинства вещей. Теперь мне нужно использовать этот составной компонент с конвертером. Поскольку конвертер (тип Omnifaces ListConverter) не требуется все время (иногда я хочу иметь привязку значений к конкретным объектам, которые возвращают выбранные элементы, иногда я этого не делаю), я хотел бы передать это в качестве частей, упомянутых ранее (например, selectItems, обработка событий ajax).
Учитывая это, необходимо использовать атрибут «для» тега конвертера для ссылки на компонент внутри составного компонента. По крайней мере, это то, что я понимаю.
К сожалению, я не знаю, какое значение следует использовать. Должен ли я включать имя составного компонента (контейнер именования)? Должен ли я использовать clientId? Я попробовал много комбинаций, но конвертер не был вызван. Как только я помещаю тег конвертера внутри определения составного компонента, он работает.
Чтобы сделать вещи проще, давайте предположим, что у меня есть следующие:
<composite:interface>
<composite:attribute name="value" required="true"/>
</composite:interface>
<composite:implementation>
[...]
<h:selectManyCheckbox id="#{cc.attrs.id}" value="#{cc.attrs.value}">
<composite:insertChildren/>
</h:selectManyCheckbox>
[...]
</composite:implementation>
Этот компонент следует использовать следующим образом:
<my:selectManyCheckbox id="myComponent" value="...">
<f:selectItems value="..."/>
<o:converter for="___" converterId="..."/>
</my:selectManyCheckbox>
Возможно, кто-то может дать мне подсказку, какое значение должно быть дано к атрибуту 'for'.