java.lang.NoSuchMethodError: FacesContext.getAttributes()Ljava/util/Map
java.lang.NoSuchMethodError: FacesContext.getAttributes()Ljava/util/Map
我将这个简单的 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 {
}
}
我的项目中有以下配置。
- 动态网络模块 - 3.0
- Java - 1.7
- Java服务器界面 - 2.2
- PrimeFaces - 5.0
- 服务器 - 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() 是从 jsf 2.0 引入的,这就是抛出该异常的原因。用新罐子替换旧罐子可能适合您。
我将这个简单的 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 {
}
}
我的项目中有以下配置。
- 动态网络模块 - 3.0
- Java - 1.7
- Java服务器界面 - 2.2
- PrimeFaces - 5.0
- 服务器 - 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() 是从 jsf 2.0 引入的,这就是抛出该异常的原因。用新罐子替换旧罐子可能适合您。