IceFaces 2 - 导航规则有时不适用

时间:2011-11-03 13:57:22

标签: navigation icefaces

我有一个小型的IceFaces项目。打开基本URL localhost:8080 / myContextPath 会打开一个名为index.jsp的文件,其中包含以下内容:

<html>
  <head> </head>
  <body>
    <jsp:forward page="faces/search.xhtml" />
  </body>
</html>

首先重定向到faces / search.xhtml。页面显示没有任何问题。浏览器地址栏按预期显示 localhost:8080 / myContextPath

位于search.xhtml页面上,有一个提交按钮,如下所示:

<h:commandButton type="submit" value="Search" id="submit" actionListener="#{searchBean.submitButton}" action="#{searchBean.navigate}" />

点击该按钮会触发actionListener,然后触发导航 -action,这会返回一个简单的成功

导航规则本身如下所示:

<navigation-rule>
  <from-view-id>/search.xhtml</from-view-id>
  <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/search.xhtml</to-view-id>
  </navigation-case>
</navigation-rule>

据我所知,在任何情况下,导航规则都应适用。

可悲的是,有时这不起作用。确切地说,每隔一次它就不起作用。单击提交按钮首先触发动作监听器,然后webapp“思考”大约1-2秒,然后重定向到损坏的页面。

正常方式之间的区别

localhost:8080 / myContextPath - &gt;点击提交按钮 - &gt;本地主机:8080 / myContextPath

而破碎的方式是,它在地址栏中看起来像这样

localhost:8080 / myContextPath - &gt;点击提交按钮 - &gt;本地主机:8080 / myContextPath /面/ search.xhtml

然后该页面被破坏,导致无法再找到所有javascript和css文件,因为它们是以相对路径引用的。

你有什么想法,哪些问题可能会导致导航错误?

简而言之:第一次加载页面,是index.jsp页面中的一个简单重定向:index.jsp - &gt; jsp:formward - &gt; search.xhtml。然后我点击提交按钮,导航规则重新加载search.xhtml。现在我再次按下提交按钮,现在导航规则不再起作用了。相反,url在地址栏中更改为localhost:8080 // faces / search.xhtml而不是保留在localhost:8080 /。

祝你好运 托拜厄斯

1 个答案:

答案 0 :(得分:0)

执行此操作时,实际发生的是您正在向前执行服务器端而不是客户端reDirect,这就是为什么您的地址栏显示“myContextPath” 它已经在“faces / search.xhtml”

<jsp:forward page="faces/search.xhtml" />

基本上当您单击“导航”时,将规则从/search.xhtml更改为/faces/search.xhtml