Я пытаюсь связать поле JText с проверкой текста, а затем связать его с моделью pojo.Моя цель - дать пользователю возможность набирать определенный набор допустимых символов с определенной длиной текста и задавать текст в модели с помощью привязки.Ниже приведен фрагмент кода.
public class TestValidationBinding {
private JTextField field;
private ModelVo modelVo;
public TestValidationBinding() {
field = new JTextField();
modelVo = new ModelVo();
field.setDocument(new PlainDocument() {
private static final long serialVersionUID = 1L;
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
// other validation for key typing, check length
int limit = 15;
if (str == null) {
return;
}
if ((getLength() + str.length()) <= limit) {
super.insertString(offs, str, a);
}
}
});
Property srcProperty = BeanProperty.create("text");
Property tgtProperty = BeanProperty.create("text");
AutoBinding binding = Bindings
.createAutoBinding(UpdateStrategy.READ_WRITE, field,
srcProperty, modelVo, tgtProperty);
binding.bind();
}
}
Класс ModelVO:
public class ModelVo {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
System.out.println("Text is:" + text);
this.text = text;
}
}
Я использую AspectJ для запуска необходимых изменений свойств в классе ModalVO.(перешли по этой ссылке, чтобы добиться этого: * http://yakafokon.wordpress.com/2008/12/02/beans-binding-jsr-295-with-pojo-and-aop/#comments).
Теперь моя проблема в том, что если я не использую привязку, проверка выполняется правильно, но текст не установлен в модальном режиме.Но если я связываю текстовое поле, текст в модели корректно устанавливается, но проверка не работает.Может ли кто-нибудь объяснить, почему он не работает, когда я использую как проверку, так и привязку?