2009-03-25 5 views
0

У меня есть объект, который мне нужно проверить. Этот объект имеет свойства, которые не могут быть нулевыми, строки, которые не могут превышать заданные строки размера и даты, которые мне нужно проверить на правильность формата.Проверка объекта

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

EDIT:

Этот объект будет использоваться при вводе WebServices поэтому любая проверка сеттер будет бесполезно и я не знаю, как система будет вести себя с добавленными зависимости от каких-либо систем на основе аннотаций

Im ищет собственное решение (да я знаю изобретать колесо)

ответ

1

Кажется, вы хотите, чтобы объект был проверен на стороне сервера веб-службы. Если да, ответ, который я предлагаю, может применяться к вашей ситуации.

Как вы, несомненно, уже видели, существует несколько способов проверки полей в объекте. Но вы знаете, что нужно сделать: проверьте каждое поле, чтобы узнать, действительно ли его значение. Здесь нет магии: вы просто проверяете поля.

Если вы хотите сохранить свой код проверки в одном месте, вам может понадобиться создать xml-схему, содержащую вашу логику проверки, сгенерировать свой класс и проверить объекты, которые вы получаете по проводу, используя схема как ссылка. Это упрощает сохранение вашего кода проверки и вашего класса: вы просто обновляете схему и повторно генерируете класс. (Я бы даже не сохранил класс в контроле источника. Просто сгенерируйте его перед компиляцией кода.Это гарантирует, что ваш класс всегда синхронизируется с вашей схемой.) Я уверен, что для этого есть библиотеки для Java (JAXB, может быть?), Но я не работал с Java в течение многих лет. Это очень общая вещь, чтобы сделать на многих языках.

1

Без точного сценария, я могу порекомендовать вам использовать методы инкубационного объекта (вы сделали сделать поля частными , правильно?) для проверки каждого изменения значений. Строка сеттера могут вызвать по длине проверки коды, дата сеттера могут вызвать формат-код проверки и т.д.

Надеются, что это помогает,

Юваль = 8-)

+0

Это должно быть POJO без логики внутри. thx для справки –

+0

POJO не означает никакой логики внутри. – CoverosGene

+0

@NunFur: рад быть полезным. возможно, вы хотели сказать «боб»? = 8-) – Yuval

1

Проверить Hibernate Validator.

+0

thx для ссылки, im пытается избежать аннотации, одним из решений было бы использовать oVal, но я искал собственное решение. Я не ищу конкретные рамки, но решения, алгоритмы –

+0

, почему избежать аннотаций? – trunkc

+0

Этот объект будет использоваться в webservices, я не уверен, как он будет вести себя с добавленными зависимостями. в любом случае, как я сказал выше, я искал собственное решение. (да, я знаю, как изобретать колесо) = D –

0

Предполагают, что вы делаете свою проверку перед установкой свойства на объекте. Например, если у вас есть свойство int, которое вы обрабатываете из строки, вам нужно будет проверить, что пустая строка, число и т. Д., Даже до ее установки. В противном случае вы столкнетесь с проблемами типа в любом случае. И, если вы хотите отобразить ошибочное значение для пользователя, вам необходимо сохранить исходную строку.

Если это веб-приложение, тогда существует множество фреймворков, которые будут выполнять эту роль для вас, а затем инициализируют ваш объект с уже проверенными и безопасными по типу значениями. Struts или Spring-MVC приходят на ум, но я не веб-разработчик. Они используют некоторую конфигурацию xml, которая описывает ваш объект и связанную с ним проверку, которую вы также можете расширить. Если это не веб-сайт, они могут немного пошатнуться, так как они захотят обработать ошибки и отобразить страницы ошибок непосредственно вашим пользователям.

Для чего-то немного ниже, попробуйте Apache Commons Validator.

1

Базовая валидация для webservice обрабатывается на уровне WSDL/XSD.

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