java.lang.NoSuchMethodError:FacesContext.getAttributes()Ljava/util/Map
我将这个简单的java.lang.NoSuchMethodError:FacesContext.getAttributes()Ljava/util/Map,java,servlets,primefaces,jsf-2.2,servlet-filters,Java,Servlets,Primefaces,Jsf 2.2,Servlet Filters,我将这个简单的SessionFilter添加到我的项目中,但是每当执行chain.doFilter时,它就会抛出错误- java.lang.NoSuchMethodError:javax.faces.context.FacesContext.getAttributes()Ljava/util/Map SessionFilter.java public class SessionFilter implements Filter { public void doFilter(Servlet
SessionFilter
添加到我的项目中,但是每当执行chain.doFilter
时,它就会抛出错误-
java.lang.NoSuchMethodError:javax.faces.context.FacesContext.getAttributes()Ljava/util/Map强>
SessionFilter.java
public class SessionFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
if (!(req instanceof HttpServletRequest)) {
chain.doFilter(req, res);
return;
}
HttpServletResponse response = (HttpServletResponse) res;
HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(response) {
@Override
public String encodeRedirectUrl(String url) {
return url;
}
@Override
public String encodeRedirectURL(String url) {
return url;
}
@Override
public String encodeUrl(String url) {
return url;
}
@Override
public String encodeURL(String url) {
return url;
}
};
try {
chain.doFilter(req, wrappedResponse); //Exception here
} catch (Exception ex) {
System.out.println(ex);
}
}
public void destroy() {
}
public void init(FilterConfig arg0) throws ServletException {
}
}
我的项目中有以下配置
- 动态Web模块-3.0
- Java-1.7
- JavaServerFaces-2.2
- PrimeFaces-5.0
- Server-JBoss-7.0
我试图找到解决这个问题的办法,但没有得到任何帮助。由于这是我的第一个Java Faces项目,我真的没有任何想法来解决这个问题。有谁能给我指出正确的方向吗?虽然您在类路径中添加了jsf-api-2.2.jar,但由于您使用JBoss-7.0作为容器,它本身就附带了jsf-api-1.2_13.jar。因此存在冲突,1.2版本从容器中获取首选项,并将首先加载。由于javax.faces.context.FacesContext.getAttributes()是从JSF2.0引入的,这就是引发异常的原因。用新罐子替换旧罐子可能对你有用。对well Sharique有效。。非常感谢……)