1

我有 2 个不同的用户,一个用户和一个 adminUser。

登录屏幕示例:

<h:panelGroup id="messagePanel" layout="block">
                    <rich:notifyMessages stayTime="2000" nonblocking="true"/>
                </h:panelGroup>
                <h:inputText id="username" value="#{LoginManager.userName}" title="#{bundle.CreateEmployeesTitle_employeeNo}" required="true" requiredMessage="#{bundle.LoginUsernameRequired}" pt:placeholder="Username"/>

                <h:inputText id="password" value="#{LoginManager.password}" title="#{bundle.CreateEmployeesTitle_employeeNo}" required="true" requiredMessage="#{bundle.LoginPasswordRequired}" pt:placeholder="Password"/>

                <h:commandLink action="#{LoginManager.loginAction}" value="#{bundle.LoginTabTitle}" styleClass="linkbutton" />

我的 loginManager 验证用户名和密码是否匹配并存在于数据库中,并在用户 admin 时返回 loginPassAdmin,在用户 user 时返回 loginPass,在用户名和密码不匹配或不存在时返回 loginFail。所以在我的登录屏幕上,我想在 loginAction 以 loginFail 返回时显示一个通知,如果可能的话,可能在同一页面上?

一块登录管理器:

if (userStatus != null) {
            if (userStatus.equalsIgnoreCase("adminUser")) {
                action = "loginPassAdmin";
                FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("username", userName);
            } else if (userStatus.equalsIgnoreCase("nonAdmin")) {
                action = "loginPass";
                FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("username", userName);
            } else {
                action = "loginFail";
            }
        } else {
            action = "loginFail";
        }
        return action;
    }

谢谢/亲切的问候

4

1 回答 1

3

设置全局面孔消息。如果您使用 in 的客户端 ID nullFacesContext#addMessage()那么它将成为您可以使用过滤的全局消息<h:messages globalOnly="true">

例如

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(action)); // Substitute "action" with real message.
return null; // <-- Returns to the same view. You can also just declare method void.

<h:messages globalOnly="true" />

在你喜欢的地方。

于 2013-09-26T11:46:15.503 回答