我正在尝试将 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)。
现在,我的问题是,如果我不使用绑定,验证会正确完成,但文本未以模式设置。但是如果我绑定文本字段,文本会在模型中正确设置,但验证不起作用。当我同时使用验证和绑定时,谁能提供见解为什么它不起作用?