2011-05-23 66 views
0

我认为这是一个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不再叫我不明白为什么...有一个请求范围,应该在这种情况下重新初始化,对不对?

你能解释我为什么失败?

谢谢。

回答

0

立即获取你的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);