【问题标题】:h:graphicImage value tag parses spaces as +h:graphicImage 值标签将空格解析为 +
【发布时间】:2012-06-25 12:45:17
【问题描述】:

我有一个包含空格的文件名:bw3 - Copy_1340627264571.jpg 我使用这个名称来加载图像,如下所示:

<h:graphicImage value="/#{myBean.imageFolder}/#{image.name}" width="30" height="30" style="border:0;"/>

翻译成:

<img width="30" height="30" style="border:0;" src="/MyAPP/image/bw3+-+Copy_1340627264571.jpg">

如果我尝试在 outputText 中打印名称,它会正确打印:

<h:outputText  value="#{image.name}"/> 

翻译成:

<span id="myForm:viewImagesTable:0:_t68">bw3 - Copy_1340627264571.jpg</span>

任何想法如何解决这个问题?

【问题讨论】:

    标签: jsf-2 el


    【解决方案1】:

    这似乎是&lt;h:graphicImage&gt; 中的一个错误。请求 URI 中的空格应使用java.net.URI 将 URL 编码为 %20,请求查询字符串中的空格应使用 java.net.URLEncoder 将 URL 编码为 +。似乎&lt;h:graphicImage&gt; 使用java.net.URLEncoder 对整个URI 进行编码。

    最好事先自己更换:

    <h:graphicImage value="/#{myBean.imageFolder}/#{image.name.replace(' ', '%20')}" />
    

    或者,更好的是,文件名中根本不允许有空格。如果涉及上传的文件,请在保存前将其替换为_ 或其他内容。

    请注意,正如您的问题标记所建议的那样,这与 EL 没有任何关系

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多