【发布时间】:2016-11-01 16:06:54
【问题描述】:
在我的 JSF 应用程序中,我有一个页面链接,该页面是使用动态查询字符串构建的:
<h:link outcome="list?#{controller.queryString}" value="Example" />
我不能使用<f:param>,因为每个请求包含的参数数量都会发生变化。
问题在于查询字符串是URL 编码的,因为某些参数值可以包含=。结果是查询字符串在结果 HTML 中被编码两次。
list?a=b%3Dc 的结果变为:
<a href=".../list.xhtml?a=b%253Dc">Example</a>
查看 JSF 规范(默认 NavigationHandler 算法)我在查询字符串中找不到任何关于编码的内容。但我认为com.sun.faces.application.NavigationHandlerImpl.findImplicitMatch 是一个相当hacky 的实现。
我的问题:我是否以错误的方式使用了<h:link>(按设计工作)还是这是一个错误?
我目前的解决方案是改用<h:outputLink> - 这会阻止使用任何导航规则。
【问题讨论】:
标签: jsf query-string