有关请求范围的jsf基本问题

| 我认为这是一个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,并且我不明白为什么...具有请求范围,在这种情况下应该重新初始化,对吗? 您能解释一下为什么失败吗? 谢谢。     
已邀请:
使您的JSF脱离
/WEB-INF
,并立即链接到它。 对于初始化失败,可能是从浏览器缓存而不是从服务器提供页面。创建一个映射到
<servlet-name>facesServlet</servlet-name>
上的
Filter
,并以
doFilter()
方法执行以下工作:
HttpServletResponse res = (HttpServletResponse) response;
res.setHeader(\"Cache-Control\", \"no-cache, no-store, must-revalidate\"); // HTTP 1.1.
res.setHeader(\"Pragma\", \"no-cache\"); // HTTP 1.0.
res.setDateHeader(\"Expires\", 0); // Proxies.
chain.doFilter(request, response);
    

要回复问题请先登录注册