JSF: JSF page and common servlet/jsp communication summary (redirect and forward)
来源:互联网 发布:大数据下的电子商务 编辑:程序博客网 时间:2024/05/02 02:19
JSF page and common servlet communication:
Note: The key is to understand the difference of servlet and JSF lifecycles.
0. common form "action" attribute can be used to post to a JSF page.
1. common servlet can redirect to JSF page. (response.sendRedirect)
2. common servlet can not forward to JSF page.
(request.getRequestDispatcher(page).forward(request, response) does not work when forward to a JSF page)
3. JSF page can redirect to common servlet/jsp.
4. JSF page can use method 1 and method 3 below to forward to common servelt/jsp, method 2 can only be used to forward to JSF page.
5. Three ways to implement forward in a jsf enviroment (usually in a listenter or action, can not be in doPost/doGet method):
Methoed1:
FacesContext context = FacesContext.getCurrentInstance();
javax.faces.application.NavigationHandler nav = context.getApplication().getNavigationHandler();
nav.handleNavigation(context,null,"login");
Method2:
FacesContext.getCurrentInstance().getViewRoot().setViewId("/browse.jsp");
Method3:
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot view = context.getApplication().getViewHandler().createView(context, "/browse.jsp");
context.setViewRoot(view);
6. Two ways to implement redirect in a jsf environment (usually in a listenter or action, can not be in doPost/doGet method)
Method 1:
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.sendRedirect("browse.jsf");
context.responseComplete(); //这一句很重要, if no this code, the server will throw exception like below
javax.servlet.ServletException: Cannot forward after response has been committed javax.faces.webapp.FacesServlet.service(FacesServlet.java:277) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Method 2:
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location",link);
Note: JSF forword methods can only be used after "Restore View" phase(including afterPhase() of the "Restore View") and before "Render Response" phase in the lifecycle.
- JSF: JSF page and common servlet/jsp communication summary (redirect and forward)
- JSF : Page Forward vs Page Redirect
- Difference between JSP forward and redirect.
- Summary on 20080617: using forward or redirection in jsp and servlet
- JSF and Hibernate
- JSP,Servlet,JSF 的区别
- JSP,Servlet,JSF 的区别
- Internationalization in JSF and JSTL
- jsf lifecycle and 4 events
- JSP/Servlet/JSF:提升JSP应用程序效率
- Struts 1 Logic 标签 - Forward And Redirect
- jsp/servlet/jsf:javaee 不再需要 ajax
- jsp/servlet/jsf--java异常框架设计
- JSP/Servlet/JSF:JavaEE 不再需要 Ajax
- JSP/Servlet/JSF:JavaEE 不再需要 Ajax
- Mixing JSTL and JSF in Web Applications
- MobileFaces, Mobile JSF Kit and GlassFish
- Jsf rich:dataTable and h:selectBooleanCheckbox 组合
- JSF: 组件和客户端标识符
- ERP软件定制是把双刃剑
- 搜索引擎优化 (SEO)
- Jive 中的设计模式 (Design Pattern)
- 点击按钮后实现复制,复制TextBox里面的内容
- JSF: JSF page and common servlet/jsp communication summary (redirect and forward)
- GPRS开发系列文章之入门篇(转)
- HelloWorld with DWR
- C#获取当前路径的方法集合
- Hibernate SQL方言收藏
- GPRS开发系列文章之进阶篇
- 很好的select count 讲解
- java eval
- GPRS开发系列文章之实战篇