我的JSF應用程序的入口點是EntryPoint.jsp
。我們正在使用JSF 1.2。用戶可以用多個不同的URL參數呼叫EntryPoint.jsp
。我想分析這些參數,加載一個具有某種狀態的會話bean,在頁面加載之前執行所有這些操作,並且繼續處理/顯示EntryPoint.jsp
或將foward /重定向到應用程序中的另一個頁面。任何人都可以推薦這個最好的設計?如何在頁面顯示之前使用條件導航邏輯設計JSF入口點頁面?
我已經在我的EntryPoint.java支持bean嘗試(異常處理刪除):
@PostConstruct
public void init() {
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
companyName = request.getParameter("companyCode");
//process parameters...
if (someCondition) {
FacesContext.getCurrentInstance().getExternalContext().dispatch("/other.jsp");
return;
}
}
,但我得到一個IllegalStateException: Response already committed
。
我也試過
FacesContext.getCurrentInstance().getExternalContext().redirect("/other.jsp");
還能得到一個IllegalStateException(沒有消息)。很明顯,這不是適當的方式或地點來做到這一點。任何人都可以推薦一個更好的方式來實現我在找什麼?
This post似乎表明一個servlet過濾器可能是一個不錯的選擇。如果是這樣,會話範圍JSF支持bean是否可以在servlet過濾器中使用?
太棒了,謝謝。你的最後一個轉折特別回答了我的小問題(即會話bean在任何JSF框架交互之前是否可用)。 –
不客氣。你只需要記住'@ EJB','@ PostConstruct'和likes不會被注入/調用。但是我不認爲這是一個問題,因爲你通常不會在會話範圍的bean上看到它。 – BalusC