目前,我在我的netbeans项目中添加了prettyfaces-jsf2-3.3.3.jar。我还使用以下测试重写规则在WEB-INF文件夹中添加了pretty-config.xml:

<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces
                  http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd">


<url-mapping id="viewRecipe">
    <pattern value="/#{ RecipeBean.filterRecipeName }/" />
    <view-id value="/faces/viewRecipe.jsf" />
</url-mapping>




使用此配置,URL

http://localhost:8080/wie-koche-ich/Spaetzle
//wie-koche-ich is the name of the netbeans project


应该参考viewRecipe.jsf页面,并将filterName设置为Spaetzle。但是,当我输入URL时,glassfish 4.0服务器返回404页,并且日志显示“在Web上下文中找不到Faces Servlet(javax.faces.webapp.FacesServlet)-无法配置PrettyFaces DynaView”。

究竟引发此异常的原因是什么,我该如何解决?

似乎没有加载pretty-config.xml。

最佳答案

这基本上意味着,PrettyFaces无法找到FacesServlet的映射。看到:

https://github.com/ocpsoft/prettyfaces/blob/3.3.3/core/src/main/java/com/ocpsoft/pretty/faces/config/servlet/WebXmlParser.java#L73

您是否在FacesServlet中手动定义了web.xml的映射?如果没有,您可以尝试添加它。或者,您可以尝试调试此类以了解发生了什么。实际上,此类(在Servlet 3.x的情况下)应该在所有servlet注册上进行迭代并找到该servlet。

10-06 12:43