9

リクエスト (ページ) スコープの 1 つのプロパティを持つ、セッション スコープの JSF Bean が必要です。それはまったく可能ですか?

4

1 に答える 1

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

    // ...
}
于 2011-05-26T11:18:39.520 に答える