Я обновляю компонент через AJAX в JSF:
<h:form>
<h:outputLink>Click me
<f:ajax event="click" render=":messages" />
</h:outputLink>
</h:form>
<h:messages id="messages" globalOnly="true" />
Поскольку <h:messages />
находится за пределами <h:form />
Я должен поставить перед двоеточием идентификатор (:
).Это работает.
Однако, если я помещаю этот же код в компонент и включаю этот компонент в мою страницу, код завершается ошибкой.Причина в том, что объявление :messages
относится к корню иерархии компонентов, в то время как компонент <h:messages />
, который я хочу обновить, фактически находится в моем пользовательском компоненте, который находится на странице (поэтому расположение имеет стиль :myComponent:messages
.
Как внутри моего компонента можно получить правильный префикс для компонента <h:messages />
? Я знаю, что могу вручную назначить идентификатор для своего компонента и использовать его для префикса ссылки (например, :#{cc.attrs.id}:messages
).Однако я не знаю, на каком уровне иерархии компонентов находится этот компонент, поэтому требуемый префикс может даже быть примерно таким: :foo:bar:x:y:messages
.