我使用Spring form taglib在我的xhtml页面中生成html-forms,该页面随Content-Type: application/xhtml+xml;charset=UTF-8
一起提供。
默认情况下,taglib会转义HTML的字符,因此它会逃脱,例如德语变音符号ü
到ü
对于HTML而言是正常的,但对于XML则不行 - 它会在客户端上导致未知的实体错误。
当然我仍然希望转义XML字符(如<
),但不是完全有效的UTF-8字符。 taglib有一个选项escapeHTML
我可以设置为false(甚至是web.xml中的全局),但是XML实体不再被转义。
令人惊讶的是谷歌没有在这里找到任何有用的东西。这不是一个不常见的问题,可以吗?
答案 0 :(得分:0)
阅读资料来源,这有帮助!
转义符号是从包HtmlCharacterEntityReferences.properties
中文件org.springframework.web.util
的类路径加载的。
在classpath文件夹中的同一个包中创建一个具有相同名称的文件,其优先级高于spring-web.jar并具有以下内容:
160 = #160
34 = quot
38 = amp
39 = #39
60 = lt
62 = gt
你会很好。
它仍然感觉有点hackish ...我找不到任何关于此的文档,如果它不是一个记录的功能,它可能很容易在未来的版本中更改。也许有人有更好的解决方案......
答案 1 :(得分:0)
使用application/xhtml+xml
提供的每个XHTML文档都应该有一个XHTML DOCTYPE声明。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
(或任何其他有效的XHTML DOCTYPE。)
声明中的DTD包含所有HTML实体名称,因此您可以根据需要使用所有HTML的命名引用。
也就是说,我认为Spring逃脱像ü
这样的事情是很奇怪的。如果字符集是UTF-8,则不应该这样做。