关于 JSTL c:out 对 XML html 自动转义 转义的禁用

    技术2025-08-17  10

     

     

    在servlet里设置了属性值 request.setAttribute("MENU", menu);

     

    doPost()或者doGet()里做跳转:

     

    代码

    getServletConfig().getServletContext().getRequestDispatcher(     mainpage).forward(request, response);

     

    在mainpage页面直接获取可以用 request.getAttribute("MENU");

     

    若用JSTL代码为 <c:out value="${MENU}"></c:out>

    MENU里面包含的 html 的特殊字符被自动转义 显示到页面

    不想转义,解决方法如下:

    -----------------------------------------

     

    <c:out value="expression" default="expression" escapeXml="boolean"/>; 

    escapeXml 属性也是可选的。

     它控制当用 <c:out>; 标记输出诸如“<”、“>;”和“&”之类的字符 

    (在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。

     如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 &、& 和 &)。

    --------------------------------------------

    对于转义的禁用 : 

    设置  escapeXml属性为"false" 即可 代码如下:

    <c:out value="${MENU}" escapeXml="false"></c:out>

     

     

     

     

    ================================================

     

     

     

    在应用程序开发中,如果内容过长,想截取一定长度字符,然后补充"....." jstl1.1引入了一个fn.tld的标签,用于处理字符,如获得字符length,substring,indexof,endWith,lowcase 实现截取字符串 如: <c:set var="log.logTitle" value="做一个截取字符串长度的测试" > </c:set> <c:choose>     <c:when test="${fn:length(log.logTitle) > 10}">      <c:out value="${fn:substring(log.logTitle, 0, 10)}......" />     </c:when>     <c:otherwise>      <c:out value="${log.logTitle}" />     </c:otherwise>    </c:choose>

     

    最新回复(0)