我正在尝试通过文本验证绑定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
。