我正在開發一個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."));
}
}
一切我讀到說,對於消息的組件ID應該是:這就是爲什麼我使用homeInfo:homeId作爲我的錯誤消息。不過,我也嘗試了homeId。如果我從<rich:message ... />
更改爲<rich:messages ... />
,我會看到我的錯誤,但是然後我得到頁面的所有全局錯誤消息,這不是我想要的。我錯過了什麼?
嘗試添加'ajaxRendered =「true」 – Makhiel