JtextField с проверкой данных и привязкой Beansbinding

Я пытаюсь связать поле JText с проверкой текста, а затем связать его с моделью pojo. Моя цель - позволить пользователю набирать определенный набор допустимых символов с определенной длиной текста и задавать текст в модели с помощью привязки. Фрагмент кода приведен ниже.

открытый класс TestValidationBinding {
    приватное поле JTextField;
    частное ModelVo modelVo;

    public TestValidationBinding() {
        field = new JTextField();
        modelVo = new ModelVo();
        field.setDocument(new PlainDocument() {
            приватный статический финал long serialVersionUID = 1L;

            @Override
            public void insertString(int offs, String str, AttributeSet a)
                    выдает BadLocationException {
                // другая проверка для ввода ключа, проверка длины
                int limit = 15;
                if (str == null) {
                    вернуть;
                }

                if ((getLength() + str.length()) <= limit) {
                    super.insertString(offs, str, a);
                }
            }
        });

        Свойство srcProperty = BeanProperty.create("текст");
        Свойство tgtProperty = BeanProperty.create("текст");
        AutoBinding Binding = Bindings
                .createAutoBinding(UpdateStrategy.READ_WRITE, поле,
                        srcProperty, modelVo, tgtProperty);
        binding.bind();

    }
}

Класс ModelVO:

открытый класс ModelVo {
    приватный текст String;

    public String getText() {
        вернуть текст;
    }

    public void setText(String text) {
        System.out.println("Текст есть:" + текст);
        this.text = text;
    }
}

Я использую AspectJ для запуска необходимых изменений свойств в классе ModalVO. (перешли по этой ссылке, чтобы добиться этого: http://yakafokon.wordpress.com/2008/12/02/beans-binding-jsr-295-with-pojo-and-aop/).

Теперь моя проблема в том, что если я не использую привязку, проверка выполняется правильно, но текст не установлен в модальном режиме. Но если я связываю текстовое поле, текст в модели устанавливается правильно, но проверка не работает. Может ли кто-нибудь объяснить, почему он не работает, когда я использую и проверку, и привязку?

2 ответа

Попробуй использовать javax.swing.text.DocumentFilter вместо того, чтобы продлить PlainDocument,

Попробуй переопределить replace метод вместо insertString если вы используете привязку.

Другие вопросы по тегам