![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Всем привет! Есть такая задача, есть множество типов документов, у которых по 30-40 полей. Кажое поле может быть как обязательным, так и не обязательным (required). Можно ли как то написать аннотацию, что бы потом в одном методе проверить все ли поля помеченные этой аннотацией заполнены ? Метод заполнено ли поле описывается естественно самостоятельно ...
Делается это для того что бы не писать для каждого типа документа, кучу проверок .. |
|||
|
||||
| Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
По моему как раз случай пользы аннотаций.
Да, можно. В методе же - получаем поля, получаем их аннотации, и если она required - то проверяем. Мало того, информацию о самом проверяльщике заполнения можно указать в той же аннотации. Без аннотаций эту информацию пришлось бы выносить в какой-то конфиг, о полях и проверяльщиках. |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
А если учитывать что каждый документ это изначально xml файл, что лучше использовать парсинг в Java объекты + аннотации на этих объектах или xslt + xpath.
Документы просто нужно валидировать ... на каждый документ по 100 - 150 правил. |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Для валидации XML существует XML-схема. Напишите XSD и парсер/валидатор проверит все за Вас.
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
А есть возможность задать валидацию такого рода: "Значение из поля x должно быть в два раза боьше значения из y" ? Там некоторые части валидации могу быть очень сложные ...
и как в таком случае потом расширять систему ? если нужно будет добавить какой нибудь новый тип документа .. |
|||
|
||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Не понимаю, зачем тогда передавать два отдельных поля. Одно же легко вычислить из другого. Если Вы имеете ввиду зависимости между полями, то XSD c этим справляется плохо, по крайней мере 1.0.
Новый тип документа будет идти с новой схемой, даже без перекомпиляции кода можно обойтись. Если у Вас все так мегаслосжно, то смотрите в сторону JSR-303 Bean Validation. Это как раз поддержка валидации аннотациями, о которой говорил Skynin, только более-менее стандартным образом без велосипедов. Вот там валиадция полей относительно друг друга делается без проблем. Как это выглядит на практике. Это сообщение отредактировал(а) jk1 - 8.2.2012, 11:39 -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |