使用GWT 2.5。
我有一些单独的bean和编辑器类(我使用SimpleBeanEditorDriver)。
EditorDriver1编辑Bean1实例,EditorDriver2编辑Bean2,EditorDriver3编辑Bean3等。
Bean1类暴露了一些非原始字段,其中包括一个Bean2和一个Bean3实例(但这里并不重要,至少我认为不应该这样)。
当我在EditorDriver1或EditorDriver2上调用EditorDriver.setConstraintViolations方法时(我在EditorDriver1上调用它,然后在EditorDriver2上调用它,但是 - 对不起我重复自己:) - 我不知道认为它应该重要),一切都很好。错误显示在屏幕上。如果我在setConstraintViolations()之后调用getErrors(),我可以看到错误存在。 当我为EditorDriver3做同样的事情时(我按照相同的顺序执行:在EditorDriver1和EditorDriver3之后),getErrors()在setConstraintViolations()之后返回一个空列表。
我已经尝试了一段时间的调试,比较了ConstraintViolation,EditorDriver,委托地图对象,但我发现它们之间没有任何有意义的区别,这可以解释不同的行为。 为了以防万一,我还检查了GWT的Github问题但是找不到足够类似这个问题的东西。
有关要注意的事项,要测试的事项或在调试时搜索的特定线索的任何想法? 谢谢。
我注意到的一件事是,如果我自己伪造ConstraintViolation对象(而不是从Validator的验证方法中获取它们),它就可以工作。 我在ConstraintViolation中可以看到的唯一区别是ConstraintViolation I forge既有desc又有elementType null(而不是分别引用验证器和FIELD)。