【问题标题】:Can't seem to figure out how to redirect to a .xhtml using primefaces似乎无法弄清楚如何使用 primefaces 重定向到 .xhtml
【发布时间】:2014-05-11 07:30:53
【问题描述】:

我在主页的 WebContent 文件夹中有一个 index.xhtml 文件。在那里,我可以将一些数据发送到控制器,然后控制器将重定向到位于 WEB-INF/jsf/ 中的 list.xhtml 文件。 list.xhtml 位于 WEB-INF/jsf/ 中,所以如果不从索引页面发送数据就无法访问它。

无论如何,从 index.xhtml 到 list.xhtml 的重定向工作完美(<p:commandButton /> 带有对控制器的操作)。问题是从 list.xhtml 导航回 index.xhtml。无论我做什么,它似乎都不起作用。

到目前为止我已经尝试过:

<h:button value="Go Back" outcome="index.xhtml" /> - 按钮显示为灰色,消息为 This button is disabled because a navigation case could not be matched。假设这是因为它在 WEB-INF/jsf/ 中搜索 index.xhtml

<h:button value="Go Back" outcome="../../index.xhtml" /> - 结果与上面相同

<p:commandButton value="Go Back" action="#{listController.goBack}" />action="#{goBackController.goBack}" - 使用 goBack() 方法返回与前面示例中的结果值相同的内容

如果有人能把我推向正确的方向,那将不胜感激。

另外我知道网页不应该真正在 WEB-INF 中,但我不知道如何隐藏 list.xhtml 页面。

【问题讨论】:

    标签: java jsf jsf-2 primefaces xhtml


    【解决方案1】:

    关于outcome,你需要知道两件事:

    1. 您不能使用带有.xhtml 的完整页面名称作为outcome 的值。例如,如果页面名称是Example.xhtml,则正确的方式是outcome="Example"
    2. 假设此时您在此页面http://yourdomain.com/app/folder/Page1.xhtml,如果您单击带有outcome="Page2" 的按钮,您将到达http://yourdomain.com/app/folder/Page2.xhtml。您不能使用 outcome 中的 ../ 导航到父文件夹。

    试试这个:

    <p:button value="Go back" href="../../index.xhtml" />
    

    如果它不起作用,在href 中放置一个绝对路径应该可以完成这项工作。

    【讨论】:

    • 您也可以在 faces-config 中添加导航规则为:&lt;navigation-rule&gt; &lt;from-view-id&gt;WEB-INF/jsf/list.xhtml&lt;/from-view-id&gt; &lt;navigation-case&gt; &lt;from-outcome&gt;Index&lt;/from-outcome&gt; &lt;to-view-id&gt;/index.xhtml&lt;/to-view-id&gt; &lt;/navigation-case&gt; &lt;/navigation-rule&gt;
    • 谢谢! &lt;p:button value="Go Back" href="index.xhtml" /&gt; 工作。
    猜你喜欢
    • 2011-07-08
    • 2021-06-04
    • 2021-08-15
    • 2014-07-28
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2014-05-19
    • 2012-05-01
    相关资源
    最近更新 更多