jsf1.2-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作用域的backingbean。我第一次去创建账户页面时,构造函数调用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);

相关内容

  • 没有找到相关文章

最新更新