1

我们正在将新应用程序与现有 JSP 应用程序集成,并尝试重新使用一些现有功能。我在 faces-navigation.xml 中有一个导航规则,例如

<from-view-id>/WEB-INF/jsp/admin/login.xhtml</from-view-id>
<navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/WEB-INF/jsp/admin/welcome.xhtml</to-view-id>
</navigation-case>
<navigation-case>
    <from-outcome>admin</from-outcome>
    <to-view-id>/WEB-INF/jsp/admin/dashaboard.xhtml</to-view-id>
</navigation-case>
</navigation-rule>  

在我的jsp中,我试图将这个定义称为

<a href="/WEB-INF/jsp/admin/login.xhtml">Admin login </a>

当我点击“管理员登录”时,我得到页面未找到异常。

有没有另一种方式来调用这个视图?

4

1 回答 1

1

中的文件/WEB-INF不可公开访问(即最终用户无法/WEB-INF通过在浏览器的地址栏中输入其裸露的 URL 直接打开任何文件)。它们只能由对文件夹中的文件执行操作的servlet访问。旧的 webapp 代码设置显然使用了这样的 servlet,无论是自产的还是来自不同的 MVC 框架。RequestDispatcher#forward()/WEB-INF

您应该将这些页面移动到文件夹之外。/WEB-INF顺便说一句,我还会/jsp从路径中删除误导性部分,因为这些文件根本不是 JSP 文件。鉴于.xhtml扩展,您实际上是在使用它的继任者 Facelets。

顺便说一句,由于新的“隐式导航”特性,导航规则从 JSF 2.0 开始就已经过时了。也许您在学习 JSF 时过于关注 JSF 1.x 目标书籍/教程?

于 2012-08-07T21:09:59.317 回答