request scoped property in session scoped JSF bean

后端 未结 1 1004
一向
一向 2020-12-16 21:11

I would like to have a session scoped JSF bean with one property that is request (page) scoped. Is it possible at all?

1条回答
  •  -上瘾入骨i
    2020-12-16 21:44

    No, that's not possible. Managed property injection only happens during creation of the bean. However, when a session scoped bean is been created there is not necessarily a request present and the injected request scoped bean would be invalid in subsequent requests in the remnant of the session.

    Do it the other way round. E.g.

    @ManagedBean
    @SessionScoped
    public class UserManager {
    
        private User current;
    
        // ...
    }
    

    and

    @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 讨论(0)
提交回复
热议问题