JSTL c:url到名称中包含空格的文件

时间:2015-03-26 20:06:48

标签: java spring jsp jstl

我正在尝试使用jsp中的<c:url>链接到图像,但它的文件名中包含空格。这意味着url将在其名称中转换为%20的一个,并且找不到它。反正有没有将每个文件重命名为不包含空格?

<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>

编辑:我是个白痴,由于某些原因,这些文件不是png而是png。

2 个答案:

答案 0 :(得分:0)

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

结果<c:url>根本不进行URL编码(查询字符串参数除外)。见How to encode a String representing URL path with JSTL?

您可以使用Spring's URL tag对模板变量进行编码:

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

答案 1 :(得分:0)

如果您在该值中生成的字符串已经完全符合您的要求,那么为什么要使用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"/>