Я разрабатываю сайт JSF и борюсь с сообщениями об ошибках. Я хочу отображать сообщения в двух местах. Должно быть глобальное сообщение об ошибке, чтобы поймать все (это работает), а другое должно улавливать сообщения для определенного ввода ... вот где у меня проблемы. Вот моя форма:jsf rich: сообщение не отображается ошибка
<h:form class="form" id="homeInfo">
<h:panelGroup layout="block" styleClass="#{HomeBean.hasResults ? 'disabled': ''}">
<fieldset data-role="controlgroup" class="multi-line">
<legend>#{homeBean.homeIdLable}</legend>
<h:inputText id="homeId" value="#{homeBean.homeId}" placeholder="Optional"
styleClass="#{HomeBean.hasResults ? 'disabled': 'required'}"/>
<rich:message for="homeId" styleClass="inline-error" />
</fieldset>
<br/>
<a4j:commandButton id="submit" value="Submit" styleClass="ui-btn-up-undefined ui-btn"
action="#{homeController.matchHomeId(HomeBean.vin)}"
disabled="#{homeBean.hasResults}"
render="#{empty facesContext.messageList ? 'homeList':''}"
onbegin="displayBusy()"
oncomplete="displayBusy('', true); matchHomeId(#{homeBean.hasResults});"/>
<br/>
</h:panelGroup>
</h:form>
А вот моя логика в контроллере, который бросает ошибку на недопустимом homeId:
public void matchHomeId(String homeId) {
if (validHomeId) {
do logic ....
} else {
getFacesContext().addMessage("homeInfo:homeId",
new FacesMessage(FacesMessage.SEVERITY_ERROR, "The home ID you entered is not valid.", "The home ID you entered is not valid."));
}
}
Все, что я прочитал говорит, что компонент идентификатор сообщения должен быть: поэтому я использую homeInfo: homeId для моего сообщения об ошибке. Тем не менее, я также попробовал просто homeId. Если я перехожу из <rich:message ... />
в <rich:messages ... />
, я вижу, что моя ошибка очень хорошая, однако затем я получаю все глобальные сообщения об ошибках для страницы, чего я не хочу. Что мне не хватает?
Попробуйте добавить 'ajaxRendered =" true "' – Makhiel