如果登录失败,我想显示PrimeFaces错误消息。这就是我到目前为止所做的:
型号:
public String login() {
Query query = em.createNamedQuery("SelectUserByLogin");
query.setParameter("alias", alias);
query.setParameter("password", password);
// TODO: type safety
List<User> result = query.getResultList();
if (result.size() == 1) {
userLoggedIn = result.get(0);
return "home?faces-redirect=true";
} else {
return null;
}
}
查看:
<h:panelGrid>
<h:outputLabel value="#{msg.alias}" for="alias" />
<p:inputText id="alias" required="true"
value="#{mbUserHandler.alias}" />
<h:outputLabel value="#{msg.password}" for="password" />
<p:password id="password" required="true"
value="#{mbUserHandler.password}" />
<h:panelGroup />
<p:commandButton action="#{mbUserHandler.login()}"
value="#{msg.login}" />
</h:panelGrid>
如果找不到用户并且无法登录,则login()返回null。这意味着视图中没有任何反应。在这种情况下,我想显示PrimeFaces错误消息。
我该怎么做?
答案 0 :(得分:0)
从这里开始:http://www.primefaces.org/showcase/ui/message/messages.xhtml
public String login() {
Query query = em.createNamedQuery("SelectUserByLogin");
query.setParameter("alias", alias);
query.setParameter("password", password);
// TODO: type safety
List<User> result = query.getResultList();
if (result.size() == 1) {
userLoggedIn = result.get(0);
return "home?faces-redirect=true";
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "error logging in", "Error logging in"));
return null;
}
}
<h:panelGrid>
<p:messages showDetail="true"/>
<h:outputLabel value="#{msg.alias}" for="alias" />
<p:inputText id="alias" required="true"
value="#{mbUserHandler.alias}" />
<h:outputLabel value="#{msg.password}" for="password" />
<p:password id="password" required="true"
value="#{mbUserHandler.password}" />
<h:panelGroup />
<p:commandButton action="#{mbUserHandler.login()}"
value="#{msg.login}" />
</h:panelGrid>
答案 1 :(得分:0)
在页面上的某个位置添加消息框。 例如(Autoupdate使它在不更新页面的ajax请求上更新自己。这很重要,因为primefaces的标准行为是使用ajax来执行commandButton-Actions):
<p:messages autoUpdate="true" id="messagebox" />
然后,您可以从bean中将消息添加到此消息框中:
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "My Message", null);
答案 2 :(得分:0)
...
<p:growl id="growl" showDetail="true" />
<p:commandButton action="#{mbUserHandler.login()}"
value="#{msg.login}" update="growl" />
...
else {
return FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Second Message", "Additional Message Detail"));
}
}
我认为您必须查看http://www.primefaces.org/showcase/页面。