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