目前,我在我的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。