【问题标题】:How to use jsf "navigation-rule" for direct non .jsf pages ("to-view-id" is not .jsf)如何将 jsf“导航规则”用于直接非 .jsf 页面(“to-view-id”不是 .jsf)
【发布时间】:2011-09-06 04:00:27
【问题描述】:

我想将“from-outcome”指向某个 BIRT 报告文件(扩展名为 .rptdesign),但它会将扩展名附加为 .jsf。我的导航规则是,

<!-- home.xhtml page -->
<navigation-rule>
    <from-view-id>/home.xhtml</from-view-id>
    <!-- navigate to group report -->
    <navigation-case>
        <from-outcome>GROUP_REPORT</from-outcome>
        <to-view-id>frameset?__report=report/new_report_group.rptdesign&amp;__overwrite=true&amp;</to-view-id>
        <redirect>
            <view-param>
                <name>Job Location</name>
                <value>#{homeController.jobLocation}</value>
            </view-param>
        </redirect>
    </navigation-case>
</navigation-rule>

然后我得到结果 URL, http://192.168.3.111:8080/imc-report-system-1.0/frameset?__report=report%2Fnew_report_group.jsf&Job%20Location=abc 但它应该是, http://192.168.3.111:8080/imc-report-system-1.0/frameset?__report=report%2Fnew_report_group.rptdesign&Job%20Location=abc 谢谢。

【问题讨论】:

  • 我不知道这是否有效,但我尝试在web.xml 中删除extension-mapping?将FacesServlet 映射到url-pattern* 而不是*.jsf
  • @BheshG,非常感谢您的回复,但它不适用于该修改:(。谢谢。
  • 作为修复,我已经用 Servlet 过滤器重写了 URL,但我认为这不是优化解决方案。

标签: jsf-2


【解决方案1】:

您无法通过 JSF 导航案例导航到非 JSF 视图。

使用ExternalContext#redirect() 重定向自己。

public void submit() {
    // ...

    String url = "frameset"
        + "?__report=report%2Fnew_report_group.rptdesign"
        + "&amp;__overwrite=true"
        + "&amp;Job%20Location=" + jobLocation;

    FacesContext.getCurrentInstance().getExternalContext().redirect(url);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多