0

ログインを実装する必要がある Web アプリケーションがあります。ユーザーは、ユーザーを認証した後にユーザー名とパスワードを提供し、権限のあるページにリダイレクトする必要があります。ページはユーザーごとに異なります。2 人以上のユーザーが同じページを取得できる場合もありますが、これを行うには利用可能なデータが異なる必要があります。ユーザーの特権 ID (divisionId) を他の Bean に渡します。

今のところ、URL にタグ付けされた URL タグ付けパラメーターとページへのダイレクトを正常に試しましたが、Bean 変数に入れることはできません。

これを p:Button で試してみると、テキストボックスの入力が Bean クラスに到達せず、ボタンのクリック時にメソッドが実行されません。

xhtml コード -

 <h:body>

    <p:growl id="growl" showDetail="true" life="3000" />
    <p:dialog id="dialog" header="Login" widgetVar="dlg" visible="true" closable="false" >        
        <h:form id="form">  
            <h:panelGrid columns="2">  
                <h:outputLabel for="username" value="Username: " />  
                <p:inputText id="username" value="#{loginBean.username}" 
                             required="true" requiredMessage="Enter Username"/>

                <h:outputLabel for="password" value="Password: " />  
                <p:password id="password" value="#{loginBean.password}" 
                            required="true" requiredMessage="Enter Password"/>                 
            </h:panelGrid>
            <p:commandButton id="LoggingButton" value="Login" action="#{loginBean.doLogin()}"
                                 update=":growl" oncomplete="handleLoginRequest(xhr, status, args),">

                </p:commandButton>

        </h:form>

    </p:dialog>
</h:body>

loginbean-

public class LoginBean{


private String username;
private String password;
private int divisionId;

/**
 * Creates a new instance of loginBean
 */

public LoginBean() {
}

public String doLogin() {


    DbUser du = new DbUser();
    divisionId = du.ValidateUser(username, password);


    if(divisionId==0)
        addMessage("Invalied username or password", false);
    else{

        if(divisionId==1){ 

//              return "superuser.xhtml?faces-redirect=true";
            return "superuser.xhtml?test="+divisionId+"faces-redirect=true";
            //superAdmin                         
       }
        else if(divisionId==2||divisionId==3){

//               return "engadmin_create_div.xhtml?faces-redirect=true";
           return "engadmin_create_div.xhtml?test="+divisionId+"faces-redirect=true";
            //ENG/IT ADMIN

        }
        else{
//                return "viewonly_user.xhtml?faces-redirect=true";
            return "viewonly_user.xhtml?test="+divisionId+"faces-redirect=true";
            //View only users
        }
    }
     return null;        
}
4

1 に答える 1

0

私はそれがうまくいくと思います:)

    <p:growl id="growl" showDetail="true" life="3000" />
    <p:dialog id="dialog" header="Login" widgetVar="dlg" visible="true" closable="false" >        
        <h:form id="form">  
            <h:panelGrid columns="2">  
                <h:outputLabel for="username" value="Username: " />  
                <p:inputText id="username" value="#{loginBean.username}" 
                             required="true" requiredMessage="Enter Username"/>

                <h:outputLabel for="password" value="Password: " />  
                <p:password id="password" value="#{loginBean.password}" 
                            required="true" requiredMessage="Enter Password"/>                 
            </h:panelGrid>
            <p:commandButton id="LoggingButton" value="Login" actionListener="#{loginBean.doLogin()}">

                </p:commandButton>

        </h:form>

    </p:dialog>
</h:body>

public class LoginBean{


private String username;
private String password;
private int divisionId;

/**
 * Creates a new instance of loginBean
 */

public LoginBean() {
}
public static void redirect(String strDes) throws IOException {
    ExternalContext ext = FacesContext.getCurrentInstance().getExternalContext();
    ext.redirect(ext.getRequestContextPath() + strDes);
}
public void doLogin() {


    DbUser du = new DbUser();
    divisionId = du.ValidateUser(username, password);


    if(divisionId==0)
        addMessage("Invalied username or password", false);
    else{

        if(divisionId==1){ 
            LoginBean.redirect("superuser.xhtml?test="+divisionId+"faces-redirect=true");
            //superAdmin                         
       }
        else if(divisionId==2||divisionId==3){    
           LoginBean.redirect("engadmin_create_div.xhtml?test="+divisionId+"faces-redirect=true");
            //ENG/IT ADMIN    
        }
        else{
            LoginBean.redirect("viewonly_user.xhtml?test="+divisionId+"faces-redirect=true");
            //View only users
        }
    }       
}

Bean からパラメーターを取得します。

Map<String,String> params = 
                FacesContext.getExternalContext().getRequestParameterMap();
      String action = params.get("test");
于 2013-04-08T06:56:46.950 に答える