gpt4 book ai didi

java - 从 web.xml 文件(CDATA 项)中删除 "error"标记

转载 作者:行者123 更新时间:2023-11-30 09:33:00 24 4
gpt4 key购买 nike

我正在从 LDAP 获取用户角色名,其中一些角色名之间有空格。

现在允许在 web.xml 中使用空格作为角色名,因此 Google 告诉我使用 CDATA

<security-role>
<role-name><![CDATA[GESMA Dispositivos Externos]]></role-name>
</security-role>

它在服务器上工作正常,但 Eclipse 一直将 web.xml 文件标记为 error。错误是 Value is not a valid NMToken

虽然只是一个烦恼,但我发现这个标记非常分散注意力。我怎样才能摆脱它?

更新:显示错误的最小 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<security-role>
<role-name>GESMA</role-name>
</security-role>
<security-role>
<role-name><![CDATA[GESMA Dispositivos Externos]]></role-name> <!-- Error HERE -->
</security-role>
<security-role>
<role-name><![CDATA[GESMA Hospital General]]></role-name> <!-- Error HERE -->
</security-role>
<security-role>
<role-name><![CDATA[GESMA Hospital Joan March]]></role-name> <!-- Error HERE -->
</security-role>
<security-role>
<role-name><![CDATA[GESMA Hospital Psiquiatric]]></role-name> <!-- Error HERE -->
</security-role>
<security-role>
<role-name>GESMAN_Manager</role-name>
</security-role>
<security-role>
<role-name>GESMAN_Admin</role-name>
</security-role>
</web-app>

我的配置是:

  • 用于 Java EE 的 Eclipse Indigo SR2
  • JBossTools 3.3.0
  • JBossAS 工具 2.3.0

提前致谢。

最佳答案

所以。在深入研究了 Java EE 的各种模式文件后,我发现 <role-name> 的类型确实是一个 xsd:token。这意味着您不能在其中使用空格,即使您使用 CDATA 部分也是如此。

CDATA 部分只是对 XML 标记中通常不允许出现的字符进行转义,例如 <" .但最后,你的空间仍然是一个空间,不允许在那里。服务器可能不会提示,一切都可能正常,但根据规范(XML 模式),您的文件无效。

所以我强烈建议你通过用下划线或其他东西替换空格来解决这个问题,不要只是关闭 Eclipse。因为另一台服务器甚至更新版本可能不再接受您的 web.xml。

(但是当然有一些方法可以阻止 Eclipse 验证文件,如果您愿意,我可以在这里发布其中的一些方法。)


编辑:这里是 Schema file 的相关部分包含在 web.xml Schema file 中.我认为这就是您将找到的有关此问题的所有“文档”。

  <xsd:complexType name="role-nameType">
<xsd:annotation>
<xsd:documentation>
The role-nameType designates the name of a security role.
The name must conform to the lexical rules for a token.
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="javaee:string"/>
</xsd:simpleContent>
</xsd:complexType>

你看,它说角色名称必须符合 token 的规则,这意味着不允许有空格。

关于java - 从 web.xml 文件(CDATA 项)中删除 "error"标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12384237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com