我在Glassfish 4上使用JSF 2.2。
我想向<h:message .../>
代码发送消息。
对于我的以下登录页面,我想从我的FacesMessage
向clientId login-error
发送登录失败的自定义UserBean
。
我的login.xhtml
:
<h:form id="login-form">
<table>
<tr>
<td><h:outputLabel value="Username" for="username" /></td>
<td><h:inputText id="username" value="#{userBean.username}" /></td>
</tr>
<tr>
<td><h:outputLabel value="Password" for="password" /></td>
<td><h:inputSecret id="password" value="#{userBean.password}" /></td>
</tr>
<tr>
<td></td>
<td><h:commandButton value="Submit" action="#{userBean.login()}" /></td>
</tr>
</table>
<div>
<h:message for="login-error" errorClass="err" />
</div>
</h:form>
我的UserBean
:
@Named
@SessionScoped
public class UserBean implements Serializable {
. . .
public String login() {
if (validate(username, password)) {
return "/success?faces-redirect=true";
}
FacesContext ctx = FacesContext.getCurrentInstance();
String msgText = "Username or Password is incorrect";
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msgText, msgText);
ctx.addMessage("login-error", msg );
return "";
}
}
我在服务器控制台中收到以下消息:
2017-04-14T21:43:02.298+0530|Warning: Unable to find component with ID login-error in view.
2017-04-14T21:43:04.923+0530|Warning: Unable to find component with ID login-error in view.
2017-04-14T21:43:04.923+0530|Info: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=login-error[severity=(ERROR 2), summary=(Username or Password is incorrect), detail=(Username or Password is incorrect)]
我也尝试过使用clientId login-form:login-error
,但也无效。
所以,我的问题是当clientId实际上不存在时如何将自定义FacesMessage发送到页面?我的方法不正确吗?
我知道我可以使用<h:messages />
,但我不想使用它。