【问题标题】:<c:set var="s" value="class=\"selected\"" scope="request"/> sets unexpected String in jstl<c:set var="s" value="class=\"selected\"" scope="request"/> 在 jstl 中设置了意外的字符串
【发布时间】:2014-05-16 05:21:36
【问题描述】:

我的 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">

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    默认情况下,escapeXml 为真,&lt;c:out&gt; 标签因此会转义 HTML 如果您不想转义,可以简单地使用

    ${s}
    

    而不是

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

    在你的情况下根本不需要&lt;c:out&gt;。对所有&lt;c:out&gt; 标签执行相同的操作。


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

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

    【讨论】:

      【解决方案2】:

      &lt;c:out&gt; 转义特殊字符,例如引号。

      如果你不想这样,你可以把它关掉:

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

      【讨论】:

        猜你喜欢
        • 2011-01-28
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-28
        相关资源
        最近更新 更多