1

user と adminUser の 2 人のユーザーがいます。

ログイン画面例:

<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" />

my loginManager は、ユーザー名とパスワードが一致してデータベースに存在することを検証し、ユーザー admin の場合は loginPassAdmin を返し、ユーザー user の場合は loginPass を返し、ユーザー名とパスワードが一致または存在しない場合は loginFail を返します。したがって、ログイン画面で loginAction が loginFail で返されたときに、可能であれば同じページに通知を表示したいと思いますか?

loginManager の一部:

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

グローバルな顔メッセージを設定します。のクライアント ID を使用するnullと、 を使用FacesContext#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 に答える