JSTL c:url指向一个名称中包含空格的文件



我正试图使用jsp中的<c:url>链接到一个图像,但它的文件名中包含空格。这意味着url被转换为名称中包含%20的url,但找不到它。有没有办法在不将每个文件重命名为不包含空格的情况下实现这一点?

<ul id="abilityTabs" data-tabs="abilityTabs" class="nav nav-tabs">
    <li class="active"><a href="#passiveTab"><img id="passiveAbility" src="<c:url value="/resources/images/abilities/${god.name} - ${god.ability5}.png"/>" alt="Banner"></a></li>
    <li><a href="#ability1Tab"><img id="ability1" src="<c:url value="/resources/images/abilities/${god.name} - ${god.ability1}.png"/>" alt="Banner"></a></li>
    <li><a href="#ability2Tab"><img id="ability2" src="<c:url value="/resources/images/abilities/${god.name} - ${god.ability2}.png"/>" alt="Banner"></a></li>
    <li><a href="#ability3Tab"><img id="ability3" src="<c:url value="/resources/images/abilities/${god.name} - ${god.ability3}.png"/>" alt="Banner"></a></li>
    <li><a href="#ability4Tab"><img id="ability4" src="<c:url value="/resources/images/abilities/${god.name} - ${god.ability4}.png"/>" alt="Banner"></a></li>

编辑:我是个白痴,出于某种原因,文件是jpg而不是png。

听起来问题出在文件扩展名而不是编码上。但无论如何。。。

事实证明<c:url>根本不进行URL编码(查询字符串参数除外)。请参阅如何使用JSTL对表示URL路径的字符串进行编码?

您可以使用Spring的URL标记对模板vars:进行编码

<spring:url value="/url/path/{variableName}">
   <spring:param name="variableName" value="more than JSTL c:url" />
</spring:url>

如果您在值中生成的字符串已经完全符合您的要求,那么为什么要使用c:url呢?

是什么阻止你改变这个:

<img id="passiveAbility" src="<c:url value="/resources/images/abilities/${god.name} - ${god.ability5}.png"/>

仅此而已:

<img id="passiveAbility" src="/resources/images/abilities/${god.name} - ${god.ability5}.png"/>

相关内容

最新更新