2012-08-07 45 views
1

我们正在将新应用程序与现有的JSP应用程序进行集成,并尝试重新使用现有的一些功能。 我有这样从非JSF页面调用Jsf视图ID

<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> 

在faces-navigation.xml导航规则在我的jsp我试图把这个定义,就像

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

当我点击“管理员登录” ,我得到页面没有发现异常。

是否有另一种方法来调用此视图?

回答

1

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

你应该移动这些网页/WEB-INF文件夹。顺便说一下,我也会从路径中删除误导性的/jsp部分,因为这些文件根本不是JSP文件。鉴于.xhtml扩展名,您实际上正在使用其后续的Facelets。

顺便说一下,自从JSF 2.0感谢新的“隐式导航”功能以后,导航规则就已经过时了。也许你在学习JSF时过分关注JSF 1.x目标书籍/教程?

+0

你说得对。这是基于JSF 1.2的5年前的应用程序,然后部分迁移到JSF 2.0。我将把这些文件移到WEB-INF之外,看看是否有帮助。我还用漂亮的脸孔来解决这个问题,但猜测这会是一个矫枉过正的问题。 – vsingh 2012-08-08 13:36:02

+0

就是这样BalusC。这么简单的东西。从WEB-INF中删除了文件夹,它们都可以访问 – vsingh 2012-08-09 13:58:59

+0

不客气。 – BalusC 2012-08-09 13:59:13