![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
в бине EJB можно увидеть следующее:
а значит, длинна Username не может быть меньше чем 1 и больше чем 32.. вопрос.. со страницы приходят данные от пользователя (input и form).. если попробовать добавить эти данные в EJB, возможно будет кинут Exception, т.к. например, юзер может поле вообще не заполнить.. как вернуться назад на страницу и показать именно то поле, в котором был брошен Exception? Можно как вариант писать <javascript> для валидации. Oднако чем больше страниц, тем больше нужно перерабатывать скрипта.. Данные со страницы приходят в Servlet, если валидировать их там, опять-таки проблема => слишком много всего, да и зачем, если правила установлены в EJB? как и где решить проблему валидации данных? ![]() |
|||
|
||||
Mikamj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.2.2007 Где: Владимир Репутация: 1 Всего: 1 |
Валидацию нужно производить в веб-слое. Например так: У вас есть класс UserInfo, который представляет собой оболочку над данными пользователя (простой JavaBean). В сервлете вы извлекаете данные, которые ввел пользователь, и кладете их в объект UserInfo. Далее вызываете на нем метод, например validate. Если он вернул false - открываем эту же страницу с выводом сообщения об ошибке, без обращения к EJB-слою. Чтобы сервлет не был огромный, рекомендую написать для каждого действия (например, отображение формы для добавления, собственно добавление и т.д.) отдельный класс-action, который вызывается из сервлета. |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
угу.. ты говоришь это, поскольку работаешь со Struts ![]() а зачем нужна двойная валидация данных? ![]() ![]() |
|||
|
||||
Mikamj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.2.2007 Где: Владимир Репутация: 1 Всего: 1 |
Нет, со Struts я не работаю. Двойная валидация конечно не нужна. Просто уберите ограничение из EJB. |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
хм... нет.. ![]() Добавлено через 5 минут и 49 секунд странно, что никто не может мне с этим помочь.. неужели никто для веба не использует EJB? ![]() |
|||
|
||||
Mikamj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.2.2007 Где: Владимир Репутация: 1 Всего: 1 |
Я нигде не видел, чтобы валидация данных производилась в EJB. Во всех фреймворках предусмотрена валидация в вебе.
Что если вам нужно будет валидировать не только длину строки? Тут аннотации не помогут... |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
валидация данных в EJB нужна для того, чтоб не писать ерунду в БД.. ![]()
ещё как помогут ![]() пожалуйста почитайте EJB 3.0 ![]() Добавлено через 2 минуты и 14 секунд я думаю так.. придётся писать javaScript для валидации на клиенте и оставлять EJB анотации для ДБ.. ![]() |
|||
|
||||
Mikamj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.2.2007 Где: Владимир Репутация: 1 Всего: 1 |
Вы гибернейт я так понял используете, а не Java Persistence API?
Я с ним не работал, не знаю какие там еще аннотации есть. Валидация с помощью JavaScript бесполезна - пользователь может просто отключить его. |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
я знаю, однако в моём случае, при выключенном JS вообще нельзя будет загрузить страницу.. у меня всё построено на AJAX-е.. а если пользователь зайдёт на сайт и выключит JS, тогда он не сможет отослать сообщение вообще.. а если он сам сконфигурирует такое сообщение, то "плохие" данные не пустит парсер EJB в БД.. ![]() мне одно не нравится, если писать отдельный JS для страниц, значит можно точно где-то что-то забыть.. хм.. может написать тоолсу, чтоб сама JS из анотаций EJB генерировала? ![]() |
|||
|
||||
Mikamj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.2.2007 Где: Владимир Репутация: 1 Всего: 1 |
Пользователь, если найдется умник какой-нибудь, может отредактировать ваш JavaScript для валидации данных как ему угодно и отправить запрос на сервер с некорректными данными.
|
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Дык... тогда, я так понимаю, для возможности незаполненных полей надо писать мин=0 ![]()
А каков характер ксепшна(я просто не юзал) Имя поля не фигурирует? Насчёт двойной проверки - а если у нас ещё ограничение и в БД длиной поля и индеском некое - дык вообще тройная проверка ![]() Но это, не так страшно, если БД автосоздаётся из еджиби. Лично я делал так(еджиби 2.1) - в сешн бине проверял вручную нужные поля и наверх кидал ксепшн с дополнительными переменными о поле, характере ошибки и проч. А веб клиент тянул по таким готовым ксепшнам нужные сообщения. Если саовцы задумали сразу такое ограничение - или доп. проверка а-ля юник индекс в базе, или нормальный механизм с коллбэком(какой, всё-таки, ксепшн кидает?). Если первое - лучше проверять самому в бине. Кста... сервлеты с энтити директли работают??? я бы порекомендовал сешн бин в качестве сешн фасада.... ![]() Раз уж еджиби есть в проекте - то надо уж использовать его преимущества... Добавлено через 4 минуты и 32 секунды Кста, такую проверку мы добавляли по возможности третьим слоем(кроме БД ограничений и логики фасада) в джаваскрипт. Житропопозакрученый юзер, конечно, может поправить js... ![]() А сделали зачем? да просто для того, чтоб для 99% юзеров не перегружать страничку, а тут же показывать ошибки. Конечно, в случаях, когда заранее известно что ограничение не будет меняться раз в месяц и не придётся везде его поддерживать... -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
polosatij |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
пожалуйста почитайте EJB 3.0 ![]()
можно просто required=true ![]()
вроде бы нет, но надо бы посмотреть ещё раз.. ![]() ![]() нет.. это анотации решают ![]() угу.. всех в топку, кто неправилъно заполнит.. нефиг сервер грузить.. пусть сразу отсеиваются ![]() однако, представляешь, ето на каждую форму JS писать.. это же х.. туча ![]() может как-нибудь генирировать JS можно? ню, я имею ввиду, не писать очередной велосипед ![]() угу.. это я ещё не успел посмотреть, тока осваиваю EJB 3.0 ![]() ![]()
|
||||||
|
|||||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 3 Всего: 8 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |