存储在ModelMap中的HTML标记不会被浏览器解释为HTML

时间:2013-09-18 02:50:27

标签: java javascript spring jstl html4

我有一个带有以下代码的弹簧控制器:

@RequestMapping(value="/getMessage.htm", method=RequestMethod.POST)
protected String uploadFile(ModelMap model){

     //... other codes

    model.addAttribute("theMessage", "Hello world <b>how are you</b> today?");

    return "the-view";
}

在客户端(JavaScript)中,我使用以下代码显示此消息:

document.getElementById('theMessageSpan').innerHTML = '<c:out value="${theMessage}"/>';

但是当它显示时,它会显示一个字符串文字

Hello world <b>how are you</b> today?

我需要将消息显示为:

Hello world 你好吗 today?

在将文本放入StringEscapeUtils.unescapeHtml之前,我尝试使用apache commons'ModelMap,但结果是一样的。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我相信默认情况下<c:out>会转义XML。你需要明确告诉它不要用

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

无法找到较新的文档,但请参阅here。在这些属性中,您有

  

escapeXml

     

确定结果中是否包含字符&lt;,&gt;,&amp;,',“   string应该转换为它们对应的字符实体   码。默认值为true。