2015-09-08 2 views
0

У меня есть выпадающее меню в калитки 1.4 (часть формы), которая показывает выбор чисел. Теперь, когда выбран номер, я изменяю статус этого номера на зарезервированный в базе данных, используя метод onUpdate для выпадающего списка.Калитка выпадающий валидация onchange

Теперь я хочу создать валидатор, который проверяет, зарезервировано ли выбранное число в базе данных или нет (каким-то другим параллельным процессом). Но этот валидатор должен проверять только на изменении значения до onUpdate, поскольку число будет зарезервировано в методе onUpdate.

Поэтому в основном то, что я хочу сделать, это вызвать вручную валидатор, когда мне нужно, и предотвратить его от того, чтобы ссылаться на другие времена

Или просто, как сделать проверки и обновления работы событий вместе

ответ

2

Просто любопытный ; почему вы хотите, чтобы валидатор выполнял эту работу, когда вы могли бы добавить метод вызова базы данных внутри самого onUpdate?

Вы все же можете создать метод многократного использования, чтобы вызвать его из разных мест и использовать его. Валидатор - это то, что вы хотите использовать для валидации формата/диапазона (это мой выбор - не обязательно лучший) и проверки бизнес-логики либо на уровне обслуживания, либо вблизи уровня DAO, если у меня нет уровня «службы».

+0

Согласны, просто проверьте выбранный номер в onUpdate() один раз и сообщите об ошибке в компоненте, если он больше не доступен. – svenmeier

+0

Я попытался сообщить об ошибке для compnent в методе onUpdate, но он не отображается в FeedbackPanel для формы. Также мне нужно, чтобы ошибка была там до тех пор, пока значение не будет изменено снова и не исчезнет после выбора бесплатного номера. – dusk7

+0

Мне не обязательно нужен валидатор, но мне нужно показать ошибку на уровне формы и отключить кнопку отправки, если номер уже зарезервирован. – dusk7

1

Я думаю, что это никогда не сработает. Когда вы проверяете перед обновлением, все еще есть шанс, что значение было изменено другим процессом.

Я бы использовал хорошее сообщение с сообщением о том, что мы не смогли обновить номер, потому что кто-то еще сделал это перед вами.

+0

Да, я пытаюсь это сделать. Я сначала делаю db-запрос в методе onUpdate, чтобы проверить, свободен ли номер или нет, прежде чем его резервировать. Но как сообщить сообщение обратной связи в FeedbackPanel формы, которая также отключила бы кнопку отправки. – dusk7

+0

Есть несколько способов: проще всего сделать кнопку отправки компонентом Wicket и вызвать 'submitButton.setEnabled (false)', если номер зарезервировано. Вы по-прежнему сохраняете состояние гонки, если сначала запрашиваете, а затем резервируете. Вы должны сделать атомарный метод запроса-резервирования db в базе данных. – RobAu

+0

Кнопка отправки является частью формы и разрешена/отключена с помощью IFormValidator, которая также проверяет другие поля. Поэтому ручное отключение кнопки отправки может вызвать проблемы. Но, похоже, что мне нужно делать, мне нужно сделать в самом onUpdate-методе, как это было предложено вами и другими. – dusk7

 Смежные вопросы

  • Нет связанных вопросов^_^