Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以使用h:outputLink对包含#锚点的URL进行组件编码?_Java_Url_Jsf_Url Encoding - Fatal编程技术网

Java 是否可以使用h:outputLink对包含#锚点的URL进行组件编码?

Java 是否可以使用h:outputLink对包含#锚点的URL进行组件编码?,java,url,jsf,url-encoding,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::stat

我有一个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函数,该函数调用
urlcoder\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)}">

这是不可能的。您所能做的最好的事情是创建一个自定义EL函数,该函数调用
urlcoder\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)}">


谢谢,所以没有内置的JSTL函数来编码URL?不,否则我会建议:)但是有一个丑陋的破解/解决方法,请参见。谢谢,所以没有内置的JSTL函数来编码URL?不,否则我会建议:)但是有一个丑陋的破解/解决方法,请参见。