尝试在我的JSF应用程序中实现Web过滤器时获取ClassNotFoundException

时间:2014-02-06 12:50:08

标签: servlets jsf-2 primefaces

我有一个JSF应用程序,由于某些原因,我需要在浏览器后面按钮刷新页面。我尝试实现BalusC在Force JSF to refresh page / view / form when opened via link or back button中给出的解决方案,唯一的区别是我的应用程序使用servlet版本2.5运行所以我在web.xml中进行了映射,如下所示

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”     id =“WebApp_ID”version =“2.5”&gt;              javax.faces.STATE_SAVING_METHOD         客户                   javax.faces.CONFIG_FILES         /WEB-INF/faces-config.xml                   com.sun.faces.config.ConfigureListener                   javax.faces.PROJECT_STAGE         生产                   javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE         真正                   login.xhtml                   FacesServlet的         javax.faces.webapp.FacesServlet         1                   FacesServlet的         /面/                   FacesServlet的          .jsf                   FacesServlet的          .faces                   FacesServlet的          .xhtml                            SessionUtil         SessionUtil         com.gaic.lpsr.utilclasses.SessionUtil                   SessionUtil         / SessionUtil     

<filter>
    <filter-name>cacheFilter</filter-name>
    <filter-class>com.gaic.lpsr.utilclasses.NoCacheFilter.java</filter-class>
</filter>
<filter-mapping>
    <filter-name>cacheFilter</filter-name>
    <servlet-name>FacesServlet</servlet-name>

</filter-mapping>

我的过滤器类是

public class NoCacheFilter implements Filter {

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    if (!request.getRequestURI().startsWith(request.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
        response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        response.setDateHeader("Expires", 0); // Proxies.
    }

    chain.doFilter(req, res);
}

@Override
public void destroy() {
    // TODO Auto-generated method stub

}

@Override
public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

}

// ...

}

我已经包含了jar servlet-api-2.5.jar。当我尝试在tomcat服务器(版本6.0.29)中部署应用程序时,我收到以下错误。

SEVERE: Exception starting filter cacheFilter

java.lang.ClassNotFoundException:com.gaic.lpsr.utilclasses.NoCacheFilter.java     在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)     在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)     在org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)     在org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)     在org.apache.catalina.core.ApplicationFilterConfig。(ApplicationFilterConfig.java:115)     at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)     在org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)     在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)     在org.apache.catalina.core.StandardHost.start(StandardHost.java:785)     在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)     在org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)     在org.apache.catalina.core.StandardService.start(StandardService.java:519)     在org.apache.catalina.core.StandardServer.start(StandardServer.java:710)     在org.apache.catalina.startup.Catalina.start(Catalina.java:581)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     在java.lang.reflect.Method.invoke(Method.java:597)     在org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)     在org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

请指导我如何解决此问题。

1 个答案:

答案 0 :(得分:1)

web.xml中的愚蠢错误:)。通过删除过滤器映射中的.java扩展来解决

<filter-class>com.gaic.lpsr.utilclasses.NoCacheFilter</filter-class>