根据BalusC 的回答,我用
FacesContext.getCurrentInstance().getExternalContext().redirect(url);
在我的@PostConstruct
方法中阻止 JSF 呈现视图并重定向用户。但是,当我尝试运行代码时,我仍然遇到java.lang.IllegalStateException
了上面一行的异常。
WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:524)
at StudentManagedBean.CourseSummary.init(CourseSummary.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
更新:我在我的@PostConstruct
方法中添加了以下行:
System.out.println("INIT " + FacesContext.getCurrentInstance().getExternalContext().isResponseCommitted());
我看到的是INIT true
。@PostConstruct
我想知道在调用方法之前是否应该提交响应?
如果您能给我一个建议,我将不胜感激。