2011-12-02 30 views

回答

2

在JSF 1.x中,你需要ExternalContext#getResponse()得到HttpServletResponse,然後就可以調用setStatus()。這也基本上是新的JSF 2.0方法在封面下所做的。

HttpServletResponse response = (HttpServletResponse) externalContext.getResponse(); 
response.setStatus(HttpServletResponse.SC_NOT_FOUND); 
// ... 
+0

謝謝!而且是安全的'GETRESPONSE()'返回強制轉換爲'HttpServletResponse'?爲什麼需要施放? – elias

+0

是,如果你在一個JSP/Servlet的Web應用程序上運行JSF是安全的。但是,JSF也可以在Portlet Web應用程序的頂部使用,然後投射失敗。又見ExternalContext'的'的Javadoc,它提到的servlet和portlet的差異,現有的委託方法的行爲:http://docs.oracle.com/javaee/6/api/javax/faces/context/ExternalContext.html – BalusC

+0

非常有幫助,非常感謝! – elias