2013-04-08 2 views
0

У меня есть веб-приложение, которое должно реализовать логин. пользователь вводит имя пользователя и пароль после аутентификации пользователя, должен перенаправлять на страницу, на которой у них есть привилегии, страницы отличаются от пользователя к пользователю. Иногда 2 или более пользователей могут получать одну и ту же страницу, но доступные данные должны отличаться для этого. У меня есть pass users ID (divId) для других bean-фановУправление сеансом с параметрированием/p: button/p: commandButton

сейчас я пробовал параметр тегов URL, помеченный URL и dirrect на страницу успешно, но Я не могу использовать переменную 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;   
} 
+0

Ваш вопрос: текстовое поле не может попасть в фасоли? –

+0

Я получаю значения текстового поля в bean при использовании commandButton. Когда я использую Button, этого не произойдет. – smk

+0

Вы используете кнопку для передачи параметра на другую страницу? –

ответ

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> 

Bean

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 
     } 
    }  
} 

вы получаете параметр из фасоли:

Map<String,String> params = 
       FacesContext.getExternalContext().getRequestParameterMap(); 
     String action = params.get("test"); 
+0

, где мне нужно вызвать этот метод – smk

+0

На целевой странице вы перенаправляете на :) –

+0

что такое ввод для strDes – smk

Смежные вопросы