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のスペースは%20usingとしてURLエンコードjava.net.URIする必要があり、リクエストクエリ文字列のスペースはusingとしてURLエンコードする必要があり+ますjava.net.URLEncoder<h:graphicImage>を使用してURI全体をエンコードしているようですjava.net.URLEncoder

事前に自分で交換することをお勧めします。

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

または、ファイル名にスペースを入れない方がよいでしょう。_アップロードされたファイルに関する場合は、保存する前に、または何かに置き換えてください。

質問のタグ付けが示唆するように、これはELとはの関係もないことに注意してください。

于 2012-06-25T13:46:42.673 に答える