如何避免Eclipse 2020-03中针对GWT ui.xml文件的错误消息(语言服务器)

时间:2020-05-31 08:07:28

标签: eclipse gwt uibinder

在我基于GWT 2.8的项目中,Eclipse 2020-03向我显示了许多在Markers-> Language Servers下的错误消息。 我确信这些不是错误。由于某种原因,Eclipse无法正确解释ui.xml文件。该应用程序可以编译并正常运行:

error messages in eclipse

我用于XML验证的日食范围设置如下:

eclipse settings

没有针对项目的设置

这里是something.ui.xml文件的一个示例的摘录(不是完整的源代码!!)。该项目包含许多这些文件:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder 
    xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui"
    xmlns:b="urn:import:org.gwtbootstrap3.client.ui"
    xmlns:a="urn:import:com.myapp.client.widgets"
    ui:generateFormat="com.google.gwt.i18n.rebind.format.PropertiesFormat"
    ui:generateKeys="com.google.gwt.i18n.server.keygen.MD5KeyGenerator"
    ui:generateLocales="default" >

<ui:with type="com.myapp.resources.text.CommonMessages" field="msgs" />
<ui:with type="com.myapp.resources.text.SummaryMessages" field="sMsgs" />

<b:Modal closable="true" fade="true" dataBackdrop="STATIC" dataKeyboard="true" 
    b:id="dialog" 
    ui:field="dialog">
    <b:ModalHeader title="{sMsgs.transferOwnership}" />
    <b:ModalBody>
        <g:HTML><ui:text from="{sMsgs.transferOwnershipDescription}"/></g:HTML>

        <b:ListBox 
            ui:field="userListBox"
            multipleSelect="false"
            width="100%"
             />

        <b:Alert type="DANGER" ui:field="participantWarning">
            <b:Icon type="WARNING"/>
            <g:HTML><ui:text from="{sMsgs.transferOwnershipNotParticipantWarning}" /></g:HTML>
        </b:Alert>
    </b:ModalBody>
    <b:ModalFooter>

这些是错误消息: error messages

关于错误的鼠标悬停始终显示: individual error message

尽管上面已声明: [...]

xmlns:b="urn:import:org.gwtbootstrap3.client.ui"

[...]

导入:应用程序编译并运行良好。所以我只想抑制那些错误消息(显示为错误),因为它们并不是真正的错误消息。 :-)

这些资源可能会有所帮助:

3 个答案:

答案 0 :(得分:2)

您可以通过取消选中Eclipse->首选项->语言服务器-> XML的框来禁用此验证。

答案 1 :(得分:1)

我遇到了同样的问题(Eclipse 2020-06)。

禁用XML语言服务器的XML内容类型对我来说很有效:

enter image description here

答案 2 :(得分:0)

“必须声明”表示在文档类型定义(DTD)或XML架构(也称为“语法”)中声明。

您引用的行:

xmlns:b="urn:import:org.gwtbootstrap3.client.ui"

它说有一个名称空间“ b”,但此行没有其他含义。例如,它没有声明哪个元素(例如Alert)在该命名空间中有效。

如果您不担心验证XML,而只希望关闭错误消息,建议您更改选项:

未指定语法:警告→忽略

这将停止Eclipse尝试根据语法验证XML,但仍会显示格式错误的 XML的错误(标签关闭两次等)。如果愿意,可以按项目配置此选项。

替代方法是提供DTD或Schema并在XML中引用它。除非gwtbootstrap3提供了一种语法(我认为不是),否则您可能必须自己编写这样的语法。

要清除现有的验证错误,您可能必须manually delete them