1

我有一个包含空格的文件名: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>

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

4

1 回答 1

3

这似乎是<h:graphicImage>. 请求 URI 中的空格应该是 URL 编码的%20using java.net.URI,请求查询字符串中的空格应该是 URL 编码的+using java.net.URLEncoder。似乎<h:graphicImage>使用java.net.URLEncoder.

最好事先自己更换它们:

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

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

请注意,正如您的问题标记所建议的那样,这与 EL无关。

于 2012-06-25T13:46:42.673 回答