我正在尝试将 JTextfield 与文本验证绑定,然后将其绑定到 pojo 模型。我的目标是允许用户键入具有特定文本长度的某些允许字符集,并使用绑定在模型中设置文本。代码片段如下所示。
公共类 TestValidationBinding {
私有 JTextField 字段;
私有模型Vo modelVo;
公共TestValidationBinding(){
字段 = 新的 JTextField();
modelVo = 新的 ModelVo();
field.setDocument(new PlainDocument() {
私有静态最终长序列版本UID = 1L;
@覆盖
public void insertString(int offs, String str, AttributeSet a)
抛出 BadLocationException {
// 其他验证键输入,检查长度
整数限制 = 15;
如果(str == null){
返回;
}
if ((getLength() + str.length()) <= 限制) {
super.insertString(offs, str, a);
}
}
});
属性 srcProperty = BeanProperty.create("text");
属性 tgtProperty = BeanProperty.create("text");
自动绑定绑定 = 绑定
.createAutoBinding(UpdateStrategy.READ_WRITE,字段,
srcProperty,modelVo,tgtProperty);
绑定.bind();
}
}
ModelVO 类是:
公共类 ModelVo {
私有字符串文本;
公共字符串 getText() {
返回文本;
}
公共无效setText(字符串文本){
System.out.println("文本为:" + text);
this.text = 文本;
}
}
我正在使用 AspectJ 在 ModalVO 类中触发必要的属性更改。(按照此链接实现此目的:: http: //yakafokon.wordpress.com/2008/12/02/beans-binding-jsr-295-with-pojo-and-aop/#comments)。
现在,我的问题是,如果我不使用绑定,验证会正确完成,但文本未以模式设置。但是如果我绑定文本字段,文本会在模型中正确设置,但验证不起作用。当我同时使用验证和绑定时,谁能提供见解为什么它不起作用?