我正在尝试通过文本验证绑定JTextfield,然后将其绑定到pojo模型。我的目标是允许用户键入具有特定文本长度的一组允许字符,并使用绑定在模型中设置文本。代码段如下所示。

公共类TestValidationBinding {
    私有JTextField字段;
    私人ModelVo modelVo;

    公共TestValidationBinding(){
        字段=新的JTextField();
        modelVo =新的ModelVo();
        field.setDocument(new PlainDocument(){
            私有静态最终长serialVersionUID = 1L;

            @Override
            public void insertString(int offs,String str,AttributeSet a)
                    引发BadLocationException {
                //其他验证键输入,检查长度
                整数限制= 15;
                如果(str == null){
                    返回;
                }

                如果((getLength()+ str.length())                    super.insertString(offs,str,a);
                }
            }
        });

        属性srcProperty = BeanProperty.create(“ text”);
        属性tgtProperty = BeanProperty.create(“ text”);
        自动绑定绑定=绑定
                .createAutoBinding(UpdateStrategy.READ_WRITE,字段,
                        srcProperty,modelVo,tgtProperty);
        binding.bind();

    }
}



ModelVO类是:

公共类ModelVo {
    私有字符串文本;

    公共字符串getText(){
        返回文字;
    }

    public void setText(String text){
        System.out.println(“文字为:” +文字);
        this.text =文字;
    }
}


我正在使用AspectJ在ModalVO类中触发必要的属性更改。
(通过此链接可以实现以下目的:: http://yakafokon.wordpress.com/2008/12/02/beans-binding-jsr-295-with-pojo-and-aop/#comments)。

现在,我的问题是,如果不使用绑定,验证会正确完成,但文本不会设置为模态。但是,如果我绑定文本字段,则会在模型中正确设置文本,但是验证不起作用。谁能提供我为什么同时使用验证和绑定却无法正常工作的见解?

最佳答案

尝试使用javax.swing.text.DocumentFilter代替extendint PlainDocument

07-28 04:13