在我的工作中,我們開發了一個JSF 2應用程序。我需要用一個方法創建一個監聽器bean,這個方法必須在每個頁面請求上執行。如何完成這項任務?如何在每個頁面請求中調用bean方法
回答
您的問題的答案可以找到here。
這種方法是至關重要的:
public void beforePhase(PhaseEvent event) {
if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
// Do here your job which should run right before the RENDER_RESPONSE.
}
}
在這裏,你可以在每一個生命週期階段的反應,並調用所需的PhaseId裏面你apropriate功能。我希望它有幫助。
當我看到你使用JSF 2,您也可以使用下面的方法:
使用此您的XHTML頁面內:
<f:event type="preRenderView" listener="#{bean.preRenderView}" />
,並調用apropriate方法在bean:
public void preRenderView() {
// Do here your job which should run right before the RENDER_RESPONSE.
}
這就是問題的答案*「如何實現在生命週期結束時運行的PhaseListener?」*,它不一定與*「如何在每個頁面請求中調用bean方法」*相同的問題。即使那樣,如果這個答案被應用了,你最好已經投票贊成重複,而不是公然地抄襲他人的答案。 – BalusC
@BalusC當然這不是同一個問題,但它可以在bean中使用。正如你在答案中提到的那樣,'preRenderView'方法也適合他的需求 – Metalhead89
一種方法是filter
。創建類:
public class MonitoringFilter implements Filter {
@Override
public void doFilter(ServletRequest _request, ServletResponse _response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)_request;
HttpServletResponse response = (HttpServletResponse)_response;
// your code here
chain.doFilter(_request, _response);
}
}
註冊它web.xml中:
<filter>
<filter-name>monitoringFilter</filter-name>
<filter-class>xyz.MonitoringFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>monitoringFilter</filter-name>
<url-pattern>/*.jsf</url-pattern>
</filter-mapping>
(以URL模式設置正確的路徑)。
我解決了它。起初,我嘗試使用過濾器,但它並不是因爲過濾器在請求開始時被調用,但是當時FacesContext沒有被初始化並且我需要,因爲我必須檢索請求的URL。所以在那之後,我嘗試了相位監聽器,它的工作原理!在beforePhase()方法中,我偵聽PhaseId.RENDER_RESPONSE。謝謝大家的指導。
- 1. 如何在請求JSF頁面時調用bean中的方法?
- 2. 頁面方法調用塊請求
- 3. 每個請求調用@Controller方法
- 4. init()方法調用在每次請求
- 5. 在ASP.NET Web窗體中,如何使用「獲取」請求調用頁面方法
- 6. 如何在輸入AngularJS的每個頁面上調用http請求?
- 7. 從URL調用託管bean中的方法請求
- 8. 要調用每個頁面請求的函數
- 9. 調用每個Ajax請求
- 10. 如何在groovy bean的方法中加載請求?
- 11. 如何使用htacess請求每個url的php頁面?
- 12. 如何在每個請求上重新加載jsp頁面?
- 13. post方法調用一個java類初始化每個請求
- 14. 在JSF中調用兩個Bean方法
- 15. 每個CakePHP 1.3頁面請求的高httpd.exe用法
- 16. 如何在春季爲每個請求獲取新bean
- 17. 重寫GetVaryByCustomString方法被調用僅在第一次請求一個頁面
- 18. 在JSF 1.2中如何在會話範圍的bean上調用方法每當頁面加載時
- 19. 如何繞過Ajax中GET請求方法的當前頁面?
- 20. 用jquery在一個頁面中處理多個頁面請求
- 21. Ajax GET請求到ASP.NET頁面方法?
- 22. ajax循環回調方法不適用於每個請求
- 23. JSF在加載頁面之前調用bean方法
- 24. 在頁面加載時調用託管bean方法
- 25. 如何調用以獲取請求另一個JSF頁面的源頁面
- 26. 在每個請求範圍的bean中注入會話作用域bean
- 27. 如何使用Spring Webflow將Ajax請求鏈接到Bean方法?
- 28. 如何從請求作用域bean的PostConstruct方法顯示FacesMessage?
- 29. 如何在SIP調用邀請請求方法後發送RTPPackets?
- 30. Jsf頁面無法調用bean的方法
對你的要求更具體,也許你根本不需要bean –
你可以爲此實現'filter'。 –
@Vasil Lukach,如何實現過濾器? –