Я обновляю компонент через 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
.