Codenameone 用于处理TextField和TextArea的验证程序

Codenameone 用于处理TextField和TextArea的验证程序,codenameone,Codenameone,我曾经在TextFields和TextArea上添加验证器约束,但现在它抛出java.lang.IllegalArgumentException:addConstraint需要一个InputComponent作为第一个参数 Form hi = new Form("Welcome", new TextModeLayout(3, 2)); Validator validator = new Validator(); TextField txt = new TextField(

我曾经在TextFields和TextArea上添加验证器约束,但现在它抛出java.lang.IllegalArgumentException:addConstraint需要一个InputComponent作为第一个参数

    Form hi = new Form("Welcome", new TextModeLayout(3, 2));
    Validator validator = new Validator();
    TextField txt = new TextField();

    validator.addConstraint(txt, new LengthConstraint(1, "HI"));

    Button btnVal = new Button("VALIDATE");
    validator.addSubmitButtons(btnVal);

    hi.add(txt);
    hi.add(btnVal);
    hi.show();

文本组件替换文本字段有效。那么,这是一种回归还是有意回归?原因是什么?

这是一种回归,是因为这种PR


我已经修复了它,我们可能会在周四推出一个热修复来解决它。

Auch。这个很疼。它以一种不容易修复的方式破坏了开发过程。也许你应该考虑制作这样的组件接口,这样就可以很容易地实现一个解决方案。此外,我还发现,如果对未添加约束的组件调用“isValid”,则会引发NullPointerException。是否有该异常的堆栈跟踪?通常情况下,这些事情只有在我们犯了一个错误时才会发生,就像我在审查公关时犯的错误一样。添加一个接口来隐藏内部代码有点问题。请注意,您可以针对源代码进行编译,作为一种短期解决方法,如果更多的人这样做,我们就会在问题到达构建服务器之前发现它…
java.lang.NullPointerException位于com.codename1.ui.validation.Validator.isValidator(Validator.java:647)
它只是试图调用isValidate(val)在空约束上。我的猜测是,如果该组件不存在约束,那么它应该简单地重新运行true。是的,但是堆栈中更高的是什么?这是谁说的?只是为了确保我承诺了一个补丁来解决一个潜在的问题