创建Dynamic Web Project时web.xml报无效display-name元素错误排查
报错核心原因
你遇到的display-name元素非法的报错,和标签本身的合法性没有关系,是web.xml全量的属性、地址、标签拼写错误导致XML解析器无法正常加载Servlet 2.5版本的XSD校验规则,只能用内置的残缺元素规则做校验,才会把合法元素判定为无效。
具体拼写错误包括:
- XML声明行的
encoding被错写为encodingg,多冗余了一个g - 根标签
<web-app>和后续命名空间属性之间没有空格分隔,被解析为<web-appxmlns:xsi=...的错误标签名,后续所有属性都无法绑定到web-app根节点 - 命名空间属性名连续拼写错误:
- 默认命名空间声明
xmlns被错写为xmlnss,多打了一个s - XSI Schema位置属性前缀
xsi被错写为xsii,多打了一个i - Schema地址的协议部分
http被错写为httpp,多打了一个p,导致地址无法正常解析 - 根标签的版本属性
version被错写为versionn,多打了一个n display-name闭合标签被换行拆分,标签名中间多了空格,变成不匹配的</display- name>
修正后可正常通过校验的web.xml代码
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>helloweb</display-name> </web-app>
后续操作提示
- 用上述修正内容替换原有web.xml全量代码后,在IDE中右键该文件选择「校验/Validate」选项重新触发校验,所有报错会自动消失
- 遇到同类XML校验类报错时,优先排查属性名、URL地址中多打冗余字母、标签被无意义空格拆分的问题,不要直接怀疑标签不符合规范要求
内容的提问来源于stack exchange,提问作者Krutika Vinchu
相关产品推荐
相关产品推荐

