aus*_*ser 3 java jsf servlets jsf-2
我有一个带有一些标准 JSF 页面和支持 bean 的 JSF webapp。
我正在尝试使用注释的urlPatterns参数@WebServlet从非根路径获取我的应用程序页面。前任:
http://localhost/<appName>/<myPath>/index.xhtml
Run Code Online (Sandbox Code Playgroud)
其中 myPath = /web 如下面的代码所示。
这似乎不起作用。该应用程序仅响应以下请求:
http://localhost/<appName>/index.xhtml
Run Code Online (Sandbox Code Playgroud)
该应用程序部署在 Tomcat 7.0 中。以及以下 JSF 依赖项:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.16</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.16</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
import javax.faces.webapp.FacesServlet;
@WebServlet(urlPatterns = "/web",
initParams = { @WebInitParam(name = "javax.faces.PROJECT_STAGE",
value = "Development") })
public class AppServlet implements Servlet {
FacesServlet servlet = new FacesServlet();
@Override
public void destroy() {
servlet.destroy();
}
@Override
public ServletConfig getServletConfig() {
return servlet.getServletConfig();
}
@Override
public String getServletInfo() {
return servlet.getServletInfo();
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
servlet.init(servletConfig);
}
@Override
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
servlet.service(req, resp);
}
}
Run Code Online (Sandbox Code Playgroud)
/web仅匹配http://localhost/<appName>/web文件夹的 URL 模式,而不是http://localhost/<appName>/web/index.xhtml您所期望的子文件夹和文件。为此,您应该使用/web/*.
@WebServlet("/web/*")
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,这不会与 JSF 一起工作,因为它自己的FacesServlet不会以这种方式被调用。也许你真的需要一个servlet 过滤器?此外,该 web init 参数创建了 a<servlet><init-param>而不是<context-param>JSF 通常需要的a 。以防万一你不知道。
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |