<c:set var =“s”value =“class = \”selected \“”=“”scope =“request”>在jstl中设置意外的字符串</c:set>

时间:2014-05-16 05:21:36

标签: java jsp jstl

我的JSP页面中有一些链接,我想要选择链接粗体。我有CSS作为:

.selected { font-weight: bold; }

我的JSP代码是:

<li <c:choose>
    <c:when test="${subject.subjectId == param.subj_id}">
    <c:set var="s" value="class=\"selected\"" scope="request"/> <!-- Here I'm setting class=selected
    <c:out value="${s}"/>
    </c:when>
</c:choose>><a href='/super-context/view-controller?action=view-content&subj_id=
    <c:out value="${subject.subjectId}"/>'>
    <c:out value="${subject.subjectName}" />
    </a></li>

但是上面的代码不起作用,当我转到页面源时,我看到下面的行

<c:out value="${s}"/>

打印:

<li class=&#034;selected&#034;>

请告诉我们如何理解:

<li class="selected">

2 个答案:

答案 0 :(得分:2)

默认情况下,escapeXml为真,<c:out>标记因此会逃脱HTML如果您不想逃避,则只需使用

${s}

而不是

<c:out value="${s}"/>

在您的案例中根本不需要<c:out>。对所有<c:out>标记以相同的方式执行此操作。


c:out转义HTML字符,以便您可以避免跨站点脚本

欲了解更多信息,请查看以下帖子:

答案 1 :(得分:1)

<c:out>转义特殊字符,例如引号。

如果您不想要,可以将其关闭:

<c:out value="class=\"selected\"" escapeXml="false"/>