java - 是否可以使用 h :outputLink? 对带有 # anchor 的 URL 进行组件编码

标签 java url jsf url-encoding

我的 URL 看起来像
http://server/context/page.jsf?param1=value1#state=statename::stateparam=value2

是否可以使用 h:outputLink 获取此 URL 并编码组件(两个值)?

我已经尝试过

<h:outputLink value="page.jsf">
    <f:param name="param1" value="#{servervalue1}#state=statename::stateparam=#{servervalue2}"/>
    <h:outputText value="#{linkname}"/>
</h:outputLink>

但它对 URL 的状态部分进行了编码,因此不再起作用。

最佳答案

这是不可能的。您能做的最好的事情就是创建一个自定义 EL 函数,该函数调用 URLEncoder#encode(),如下所示:

public static String urlEncode(String value) {
    return URLEncoder.encode(value, "UTF-8");
}

然后按如下方式使用它:

<h:outputLink value="page.jsf?param1=#{util:urlEncode(value1)}#state=statename::stateparam=#{util:urlEncode(value2)}">

关于java - 是否可以使用 h :outputLink? 对带有 # anchor 的 URL 进行组件编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195189/

相关文章:

java - 枚举和变量的名称相同

java - Real Time Java 如何避免优先级倒置

php - 如何在 PHP 中创建友好的 URL?

jsf - primefaces 数据表 rowedit 不更新单元格元素

java - 使用 apache poi 存在项目符号点时正确的文本对齐

java - 将多个项目和依赖项构建到一个 jar 文件中

python - 使用 urlparse (Python) 解析自定义 URI

java - 线程中的异常 "main"java.lang.IllegalStateException : Already connected

eclipse - 停止 Eclipse 在文件保存时重新启动我的 Web 应用程序

jsf - ExtendedDataTable - 高度不起作用