2012-12-23 59 views
1

我的managedbeans存在問題。我無法設法在它們之間傳遞參數。這是一個XHTML代碼片段。它基本上是一種登錄形式。它只是將參數發送給後端bean。在managedbeans primefaces之間傳遞參數

<h:outputLabel for="username" value="Kullanıcı Adı: *" /> 
    <p:inputText id="username" value="#{loginBean.username}" required="true" requiredMessage="Kullanıcı adı giriniz."> 
    <f:validateLength minimum="2" /> 
    </p:inputText> 
    <p:message for="username" display="icon"/> 
    <h:outputLabel for="password" value="Şifre: *" /> 
    <p:inputText id="password" value="#{loginBean.password}" required="true" requiredMessage="Şifreyi giriniz!" type="password"> 
    <f:validateLength minimum="2" /> 
    </p:inputText> 
    <p:message for="password" id="msgPass" display="icon"/> 
    <f:facet name="footer"> 
    <center> 
     <p:commandButton id="submit" value="Giriş" icon="ui-icon-check" action="#{loginBean.check}" style="margin:0" update="grid"/> 
    </center> 
    </f:facet> 

在我的支持bean中,我檢查用戶輸入是否與數據庫記錄匹配。如果是的話,我讓他進入系統。同時,我正在以他的全名。

我backbean:

@ManagedBean 
@RequestScoped 
public class LoginBean { 
    public String getUsername() { 
    return username; 
    } 
    public void setUsername(String username) { 
    this.username = username; 
    } 
    public String getPassword() { 
    return password; 
    } 
    public void setPassword(String password) { 
    this.password = password; 
    } 
    public String getMgs() { 
    return mgs; 
    } 
    public void setMgs(String mgs) { 
    this.mgs = mgs; 
    } 
    public String getFullname() { 
    return fullname; 
    } 
    public void setFullname(String fullname) { 
    this.fullname = fullname; 
    } 
    public String getOriginalURL() { 
    return originalURL; 
    } 
    public void setOriginalURL(String originalURL) { 
    this.originalURL = originalURL; 
    } 
    private String username; 
    private String password; 
    private String mgs; 
    private String fullname; 
    private String originalURL; 
    private static Logger log = Logger.getLogger(LoginBean.class.getName()); 
    public String check() throws Exception { 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/projetakip", "root", ""); 
    Statement stmt = con.createStatement(); 
    String md5Pass = md5(password); 
    String SQL = "select * from users where username='" + username + "' and password='" + md5Pass + "'"; 
    ResultSet rs = stmt.executeQuery(SQL); 
    while (rs.next()) { 
     if (username.matches(rs.getString("username")) && md5Pass.matches(rs.getString("password"))) { 
     this.fullname = rs.getString("ad") + " " + rs.getString("soyad"); 
     return "panel?faces-redirect=true"; 
     } else { 
     FacesMessage msg = new FacesMessage("Yanlış kullanıcı adı/şifre."); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
     return "index?faces-redirect=true"; 
     } 
    } 
    return "index?faces-redirect=true"; 
    } 
    public void getProductSetupData(ActionEvent event) { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    Data data = context.getApplication().evaluateExpressionGet(context, "#{data}", Data.class); 
    } 

我想是通過fullName到其他豆類(或頁面)。我如何在我的bean之間傳遞這個變量?

在此先感謝。

回答

7

BalusC寫了一篇關於communication in JSF 2.0的完整博客文章,它確實值得你花時間。讀它,你會發現有這樣做的方法不止一種,其中之一是注射財產本身,在其他豆類:

@ManagedProperty("#{loginBean.fullName}") 
private String fullName; 

而另一個,也許更合適,可能是注入豆本身:

@ManagedProperty("#{loginBean}") 
private LoginBean loginBean; 
+0

嗨。你的鏈接被破壞 – Fritz

+1

@Fritz謝謝,它爲我工作重定向到:http://balusc.omnifaces.org/2011/09/communication-in-jsf-20.html,所以我改變了這個位置 – elias

+0

我明白了。也嘗試在我的家用電腦上。必須是工作中的代理人。謝謝! :d – Fritz