Facelets等效于<jsp-file> servlet映射

时间:2017-09-12 13:49:37

标签: jsf

注意 - 此问题可能已在早些时候得到解答,但我无法找到任何相关说明。因此问!

背景 - 我正在开发一个使用JSP作为视图技术的遗留JSF应用程序。既然我们已经决定转向JSF 2.2 / 2.3,那么我们也将JSP页面更改为facelets。

问题 - 在web.xml中,我们有以下映射 -

<servlet>
   <servlet-name>dummyframe</servlet-name>
   <jsp-file>/WEB-INF/dummyframe.jsp</jsp-file>
</servlet>

<servlet-mapping>
    <servlet-name>dummyframe</servlet-name>
    <url-pattern>dummyframe</url-pattern>
<servlet-mapping>

我们已将jsp文件转换为facelet文件,但不确定如何处理此jsp文件映射。

我们计划编写将重定向到facelet页面的java类。在这种情况下,映射将是 -

<servlet>
   <servlet-name>dummyframe</servlet-name>
   <servlet-class>xxx.xxxx.dummyframe</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>dummyframe</servlet-name>
    <url-pattern>dummyframe</url-pattern>
<servlet-mapping>

我有的问题 - 1)这是一个不错的选择吗? 2)如果没有编写java类,还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

  

1)这是一个不错的选择吗?

是的,但我认为在filter而不是servlet类中实现重定向会更好。

  

2)如果没有编写java,还有其他选择吗?   类?

将虚拟servlet映射保留在web中,xml保持原样并放入/WEB-INF/dummyframe.jsp这个:

<html>
  <head>
    <meta http-equiv="Refresh" content="0; URL=mynewdummyfile.jsf">
  </head>
</html>

或者这个:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
  <body>
     <c:redirect url="mynewdummyfile.jsf"/>
  </body>
</html>

或者这个:

<%@ page import = "java.io.*,java.util.*,javax.servlet.http.HttpServletResponse" %>

<html>
   <body>
      <%
         response.sendRedirect("mynewdummyfile.jsf");
      %>
   </body>
</html>

或者这个:

<%@ page import = "java.io.*,java.util.*,javax.servlet.http.HttpServletResponse" %>

<html>
   <body>
      <%
         response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
         response.setHeader("Location", "mynewdummyfile.jsf"); 
      %>
   </body>
</html>

或者这个:

<%@ page import = "javax.servlet.ServletContext" %>

<html>
   <body>
      <%
        ServletContext sc = getServletContext();
        sc.getRequestDispatcher("/WEB-INF/mynewdummyfile.jsf").forward(request, response);
      %>
   </body>
</html>