2011-05-23 84 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);