Jsf FacesceCeptionFilter OmniFaces使用WEB-INF中的错误页

Jsf FacesceCeptionFilter OmniFaces使用WEB-INF中的错误页,jsf,web.xml,omnifaces,Jsf,Web.xml,Omnifaces,我需要一些使用OmniFaces功能的帮助 当遇到异常时,我试图使用FacesceCeptionFilter将用户重定向到错误页面 我有以下web.xml配置 <?xml version="1.0" encoding="UTF-8"?> xxxxx 1. pages/secured/main.xhtml 小脸蛋 javax.faces.webapp.FacesServlet 1. 小脸蛋 *.xhtml javax.servlet.js

我需要一些使用OmniFaces功能的帮助

当遇到异常时,我试图使用FacesceCeptionFilter将用户重定向到错误页面

我有以下web.xml配置

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

xxxxx
1.
pages/secured/main.xhtml
小脸蛋
javax.faces.webapp.FacesServlet
1.
小脸蛋
*.xhtml
javax.servlet.jsp.jstl.fmt.localizationContext
资源.应用
javax.faces.STATE_保存方法
客户
上下文配置位置
/WEB-INF/spring-application-context.xml
facelets.DEVELOPMENT
真的
javax.faces.FACELETS\u刷新\u周期
2.
主题
神话素
javax.faces.FACELETS\u库
/WEB-INF/springsecurity.taglib.xml
javax.faces.SEPARATOR_CHAR
_
org.springframework.web.context.ContextLoaderListener
com.bdo.corpsoa.utilities.security.listeners.impl.CorpSoaSessionListener
FacescececeptionFilter
org.omnifaces.filter.FacesExceptionFilter
FacescececeptionFilter
小脸蛋
org.omnifaces.FACES\u视图\u扫描\u路径
/*.xhtml
org.omnifaces.FACES\视图\路径\动作
将\u重定向到\u扫描\u无扩展
javax.faces.application.ViewExpiredException
/WEB-INF/pages/errors/viewExpired.xhtml
java.lang.RuntimeException
/WEB-INF/pages/errors/unHandled.xhtml
404
/WEB-INF/pages/errors/pageNotFound.xhtml
java.io.FileNotFoundException
/WEB-INF/pages/errors/pageNotFound.xhtml
但是,当发生异常时,用户只是重定向到默认的500错误页面

只有将错误页移出WEB-INF文件夹,重定向才会起作用 /WEB-INF/pages/errors/pageNotFound.xhtml-->/pages/errors/pageNotFound.xhtml

但这意味着现在可以直接访问错误页面。但在Omnifaces展示中,这应该是可能的。我不知道我错过了什么请帮助我

下面是Omnifaces showcase的web.xml,它显示了web-INF中的错误页面是可能的

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


如果我在jsf页面上放置一个EL表达式或jsf组件,那么FacesceCeptionFilter似乎实际上正在工作

由于某些原因,此错误页将不起作用,并将生成默认的404页

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:body>
    <h1>ZZZZZZZZZ</h1>
</h:body>
</html>

zzzzzzz
但是,此错误页将起作用

 <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:body>
    <h1>#{"XXXXXXXX"}</h1>
</h:body>
</html>

#{“XXXXXXXX”}

showcase说
FacesceCeptionFilter
解决了两个问题。我想了解您是否希望导航到所有异常,而不仅仅是这两个特定的异常。您好,谢谢您的回复,我想导航到所有异常。它在我本地的WEB-INF中运行良好。触发异常时,您是发送ajax还是非ajax请求?如果不使用FacesView怎么办?与SSCCE的战争会有所帮助。我无法复制这个。嗨,谢谢你的回复。我发布了一个答案来解决我的问题。它现在可以正常工作,但我不知道为什么上面的第二页不能正常显示。我现在不接受这个。因为我不知道这是否是预期的行为,或者我在某个地方有一个错误的配置设置。嗨,我将接受这个答案,因为它确实解决了我的问题。我没有得到任何关于我的配置错误的评论。
   <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:body>
    <h1>#{"XXXXXXXX"}</h1>

</h:body>
</html>
 <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:p="http://primefaces.org/ui">
    
    <h:body>
        <h1>ZZZZZZZZZ</h1>
    
    </h:body>
    </html>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:body>
    <h1>ZZZZZZZZZ</h1>
</h:body>
</html>
 <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:body>
    <h1>#{"XXXXXXXX"}</h1>
</h:body>
</html>