Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java annotation 
:(
    Опции темы
4epT
Дата 7.2.2012, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Всем привет! Есть такая задача, есть множество типов документов, у которых по 30-40 полей. Кажое поле может быть как обязательным, так и не обязательным (required). Можно ли как то написать аннотацию, что бы потом в одном методе проверить все ли поля помеченные этой аннотацией заполнены ? Метод заполнено ли поле описывается естественно самостоятельно ...

Делается это для того что бы не писать для каждого типа документа, кучу проверок ..
PM MAIL   Вверх
Skynin
Дата 7.2.2012, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 6
Всего: 10



По моему как раз случай пользы аннотаций.

Да, можно.
В методе же - получаем поля, получаем их аннотации, и если она required - то проверяем.
Мало того, информацию о самом проверяльщике заполнения можно указать в той же аннотации.

Без аннотаций эту информацию пришлось бы выносить в какой-то конфиг, о полях и проверяльщиках.
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
4epT
Дата 7.2.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



А если учитывать что каждый документ это изначально xml файл, что лучше использовать парсинг в Java объекты + аннотации на этих объектах или xslt + xpath.

Документы просто нужно валидировать ... на каждый документ по 100 - 150 правил.
PM MAIL   Вверх
jk1
Дата 7.2.2012, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Для валидации XML существует XML-схема. Напишите XSD и парсер/валидатор проверит все за Вас.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
4epT
Дата 7.2.2012, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



А есть возможность задать валидацию такого рода: "Значение из поля x должно быть в два раза боьше значения из y" ? Там некоторые части валидации могу быть очень сложные ...

и как в таком случае потом расширять систему ? если нужно будет добавить какой нибудь новый тип документа ..
PM MAIL   Вверх
jk1
Дата 8.2.2012, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

А есть возможность задать валидацию такого рода: "Значение из поля x должно быть в два раза боьше значения из y" ?


Не понимаю, зачем тогда передавать два отдельных поля. Одно же легко вычислить из другого.
Если Вы имеете ввиду зависимости между полями, то XSD c этим справляется плохо, по крайней мере 1.0.

Цитата

и как в таком случае потом расширять систему ? если нужно будет добавить какой нибудь новый тип документа .. 


Новый тип документа будет идти с новой схемой, даже без перекомпиляции кода можно обойтись.

Если у Вас все так мегаслосжно, то смотрите в сторону JSR-303 Bean Validation. Это как раз поддержка валидации аннотациями, о которой говорил Skynin, только более-менее стандартным образом без велосипедов. Вот там валиадция полей относительно друг друга делается без проблем. Как это выглядит на практике.

Это сообщение отредактировал(а) jk1 - 8.2.2012, 11:39


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.