我们有一个在码头上运行的遗留 JSF 应用程序。它的页面/foo/bar/mypage.xhtml
带有 outputLink 标签,例如:<h:outputLink value="?param1=value1">Click</h:outputLink>
。这些链接是在没有任何上下文的情况下生成的,因此当单击时,浏览器会正确链接到具有指定参数的当前页面。
我们最近安装了 Xebia 的XForwardedFilter来解决在代理后面运行应用程序的问题。但是,启用它后,jsf 会使用上下文生成链接(据我了解,这是正确的行为)。不幸的是,上下文在 last 之后不包含任何内容/
,因此当前页面不包含在链接中。对于上面的示例,链接变为/foo/bar/?param1=value1
而不是所需的/foo/bar/mypage.jsf?param1=value1
解决方法是包含链接值的当前页面:<h:outputLink value="mypage.jsf?param1=value1">Click</h:outputLink>
. 问题是应用程序中有很多这样的链接,其中一些在包含中,这需要传递一个额外的参数来指示应该引用的页面。
有没有办法让 outputLink 生成完整的上下文?或者,如果我们可以完全禁用上下文生成以便发生先前的行为,那也可以。