JtextField с проверкой данных и привязкой Beansbinding - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь связать поле 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).

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

Ответы [ 2 ]

1 голос
/ 27 июля 2011

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

1 голос
/ 21 января 2011

Попробуйте использовать javax.swing.text.DocumentFilter вместо exteint PlainDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...