我认为这是一个 jsf 基本问题,但我只需要一点解释..
我有一个登录页面,其中有一个指向 CreateAccount 页面的链接:
<div
id="TGOV_popAccount"
style="float: left; margin-left: 60px !important;"><a
href="/createAccount.jsp">Create Account</a></div>
现在,这个jsp页面打开了一个jsf facelet(是的,丑陋的设计):
createAccount.jsp:
<jsp:forward page="/WEB-INF/jsf/account/createAccount.jsf" />
所以现在,这个 createAccount.jsf 有一个 CreateAccountBean 作为具有request
范围的支持 bean。我第一次去创建帐户页面时,构造函数会调用 init 方法(由于某种原因,@PostConstruct 不会自动调用,这就是我从构造函数调用它的原因......也许是因为那个 jsp 转发?)
public CreateAccountBean() {
init();
}
@PostConstruct
public void init() {
userLoginVo = new UserLoginVo();
logger.info("init called");
}
如果再次打开我的登录页面并再次进入 createAccount 页面,则不再调用 init 并且我不明白为什么...具有请求范围,在这种情况下应该重新初始化它,对吗?
你能解释一下为什么会失败吗?
谢谢。