在Servlet中构建HTML添加额外的引号

时间:2015-07-16 03:12:58

标签: java html spring jsp

所以我试图在Spring控制器中构建一些HTML标记。示例代码:

append(sb ,"<div class=&quot;myDiv&quot;>");

在浏览器上生成以下HTML源代码:

<div class=""myDiv"">

追加代码:

private void append(StringBuilder sb, String value) {
         sb.append(value).append(System.getProperty("line.separator")).append('\n');
}

我的问题是,为什么生成的HTML代码有一组额外的&#34;&#34;围绕文字 myDiv ?我的控制器方法是生成这个HTML:

@RequestMapping(value = "/getSerialRanking", method = RequestMethod.POST, produces = MediaType.TEXT_HTML_VALUE)
    @ResponseBody
    public String getSerialRankings(@RequestParam(value = "serialNumber", required = false) String serial){

2 个答案:

答案 0 :(得分:1)

在没有引号的html单字属性中是合法的

<div class=myDiv>

由您的浏览器转换为此

<div class="myDiv">

根据这些知识,我假设您的Spring Controller会自动将值转换为<div class="&quot;myDiv&quot;">然后您的浏览器会将&quot;转换为合法的HTML实体"

  

&quot;被忽略,直到它到达浏览器,并将其转换为合法的HTML实体"

最后,我认为您可以安全地删除此案例的&quot;。或者,如果您在HTML属性中使用多个单词,请使用@ElliottFrisch解决方案:

append(sb ,"<div class=\"myDiv\">");
append(sb ,"<div class='myDiv'>");

答案 1 :(得分:0)

不要使用HTML引号,我想你想改变

append(sb ,"<div class=&quot;myDiv&quot;>");

转义双引号,如

append(sb ,"<div class=\"myDiv\">");

HTML允许您混合引号,因此您可以说

append(sb ,"<div class='myDiv'>");