Первый аргумент FacesContext#addMessage()
должен быть идентификатором клиента, а не идентификатором компонента.Идентификатор клиента - это то, что вы видите в качестве идентификатора HTML-элемента в сгенерированном HTML-выводе (как вы можете увидеть, щелкнув правой кнопкой мыши страницу и Просмотр источника в браузере).Для компонентов ввода и команд JSF в форме это обычно начинается с идентификатора формы.
Таким образом, для следующей ссылки
<h:form id="formId">
...
<h:commandLink id="linkId" ... />
<h:message for="linkId" />
</h:form>
вы должны добавить сообщение следующим образом:
FacesContext.getCurrentInstance().addMessage("formId:linkId", message);
Однако более канонический подход к отображению глобальных сообщений, который вы бы сделали в методе действия, заключается в использовании <h:messages globalOnly="true" />
, который можно заполнять сообщениями с null
идентификатором клиента.
Итак,
<h:form id="formId">
...
<h:commandLink id="linkId" ... />
<h:messages globalOnly="true" />
</h:form>
с
FacesContext.getCurrentInstance().addMessage(null, message);
См. Также: