FreeMarker模板size实体引用未以分号结尾错误排查求助
解决FreeMarker分页宏的XML实体引用错误
错误原因分析
- 原始代码中的
&是XML特殊字符,XML解析器会将&开头的内容视为实体引用。&size并非XML预定义实体,且未以;结尾,因此触发实体"size"的引用必须以';'分隔符结尾错误。 - 你尝试替换
&为&后出现ampsize错误,大概率是操作时遗漏了&的分号,导致&size被解析成一个不存在的实体引用。
解决方案
将URL参数中的&正确替换为XML实体&(必须带分号),XML解析器会自动将&转回&,同时避免实体引用错误。
修正后的代码行
<a class="page-link" href="${url}?page=${p - 1}&size=${page.getSize()}" tabindex="-1">${p}</a> <a class="page-link" href="${url}?page=${page.getNumber()}&size=${c}" tabindex="-1">${c}</a>
额外优化建议
如果你的分页宏需要处理更多URL参数,可考虑使用FreeMarker的url内置函数自动编码特殊字符,避免手动转义:
<#assign pageUrl = url + "?page=" + (p - 1) + "&size=" + page.getSize()?string> <a class="page-link" href="${pageUrl?encodeUrl}" tabindex="-1">${p}</a>
?encodeUrl会自动将URL中的特殊字符(包括&)编码为符合规范的格式,同时保证XML解析正常。
内容的提问来源于stack exchange,提问作者Display_name
相关产品推荐
相关产品推荐

