我正在使用Eclipse MessageManager
在输入无效的情况下提供错误消息。例如:
mmng.addMessage("textLength", "blah", null, IMessageProvider.ERROR, field);
我这样做了两次。进入ModifyListener
的实例后,在创建Text
字段后立即执行,以验证加载时的输入。
在子实例的MessageManager
方法中调用addMessage
方法时,modifyEvent
在页面标题和文本字段(装饰器)旁边显示错误ModifyListener
。但是,在创建文本字段后立即添加消息时,只会显示一个装饰器(标题中没有错误,表示“检测到n个错误”)。
我想知道为什么会这样。我用Eclipse ProductEditor
测试了这个,实际上有类似的行为。如果您打开第一页上出现错误的.product
文件(仅显示装饰器),则错误不会出现在标题中。但是,当切换到其他页面然后切换回此特定页面时,将出现标题中的错误。不幸的是,我并非如此。如果我可以实现相同的行为,我会感到满意,即使最好的情况是在两个位置,标题和作为装饰器的字段旁边自动显示错误。
我也尝试通过调用update()
实例的MessageManager
方法来解决此问题,但不幸的是,这并没有解决这个问题。
顺便说一下,我正在使用Eclipse Luna 2。
答案 0 :(得分:0)
我调试了MessageManager
类,并注意到update
方法中的以下条件:
if (form.getHead().getBounds().height == 0 || mergedList.isEmpty() || mergedList == null) {
form.setMessage(null, IMessageProvider.NONE);
return;
}
除了在mergedList
为空时会抛出NPE,这种情况对我来说似乎很奇怪。但是,设置头部的高度解决了我的问题:
form.getForm().getHead().setBounds(0, 0, 0, 1);