2011-05-26 67 views

回答

8

不,這是不可能的。管理財產注入只有在創建bean時發生。但是,當創建會話作用域bean時,不一定存在請求,並且注入的請求作用域bean將在會話剩餘部分的後續請求中無效。

這樣做是相反的。例如。

@ManagedBean 
@SessionScoped 
public class UserManager { 

    private User current; 

    // ... 
} 

@ManagedBean 
@RequestScoped 
public class Login { 

    private String username; 
    private String password; 

    @ManagedProperty(value="#{userManager}") 
    private UserManager userManager; 

    @EJB 
    private UserService userService; 

    public String submit() { 
     User user = userService.find(username, password); 

     if (user != null) { 
      userManager.setCurrent(user); 
      return "home?faces-redirect=true"; 
     } else { 
      addErrorMessage("Unknown login, please try again"); 
      return null; 
     } 
    } 

    // ... 
} 
+0

我試過,但它導致了以下異常:'無法設置管理的Bean我失去了credentials'.What財產的UserManager?我把getter和setter給userManager,但是什麼都沒有.... – Hari 2013-05-27 13:48:19

+0

如果你有一個與原始問題無關的新問題,請按右上角的Ask Question按鈕。不要忘記粘貼完整的堆棧跟蹤,答案通常只是根本原因。 – BalusC 2013-05-27 13:51:24

+0

感謝您的快速回復,這裏是我的問題(剛發佈)。 – Hari 2013-05-27 14:03:20