3

在发现 Mojarra 存在的一些潜在性能问题后,我最近将我的应用程序切换为在 Mojarra 2.1.7 的 MyFaces 2.1.10 实现上运行。

我一直在使用允许漂亮的无扩展 URL 的 OmniFaces SEO 功能。这通过使用 servlet 过滤器进行操作,并通过向 WEB-INF 添加上下文参数web.xml以及faces-views向 WEB-INF 添加目录以反映 Web 应用程序的 xhtml 文档布局来自动启用。

然而,我有点担心与 Spring 的兼容性问题,因为我正在使用 Spring Container 和他们的自定义 EL 解析器,用 Spring 依赖注入替换 JSF 依赖注入,使每个托管 bean 也是一个 Spring bean。更令人担忧的是,我正在实现 Spring Security,它也通过使用 servlet 过滤器来拦截和验证传入请求。我担心的是,如果它们碰巧以某种顺序被调用,它们可能无法正常工作。

嗯,Mojarra 的 ExtensionlessURLS 功能与文档中描述的有点不同

我注意到要让它在 Mojarra 中工作,我只需将我的 xhtml 文件保留在其原始位置,但是我需要在目录中放置一个具有相同名称和相对路径的空文件faces-views。过滤器似乎可以识别无扩展或 XHTML 请求并正确显示页面

然而,当我切换到 MyFaces 时,这种行为发生了变化,现在目录中的空文件faces-views导致在页面请求上引发 Premature EOF 异常。我注意到,为了能够同时处理 XHTML 和无扩展请求,我需要在两个地方保留同一页面的重复副本。

我试图通过将文件放入 do a 来解决这个问题,faces-views它找到了源,但是当我这样做时页面没有正确加载。

我的问题是,为什么我看到 Mojarra 和 MyFaces 与 ExtensionlessURLs 之间的行为不同?Spring Security 会不会是这个原因呢?我怎样才能解决这个问题,我不需要在我的项目中保留两个相同源代码的副本(显然我通过接受这个来邀请愚蠢的错误和错过的功能)?

4

0 回答 0