| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > JSF сообщения при валидации и конвертации |
| Автор: Fedrus 20.9.2007, 15:55 |
| При использовании стандартных валидаторов и конвертеров нужно использовать не стандартные сообщения. Знаю что можно использовать message bundle file. Может кто знает другие решения этой задачи. Но хотелось бы использовать стандартную SUN спецификацию. Заранее спасибо. |
| Автор: Maksym 20.9.2007, 16:22 |
| Fedrus Использовать ResourceBundle -- самое что ни на есть типовое решение. По какой причине оно тебе не подходит? В принципе, можно перезатирать валидационные сообщения на следующем этапе jsf life cycle (находя их по id компонента, с которым они ассоциированы). Но это не очень кошерно. |
| Автор: Fedrus 20.9.2007, 16:42 |
| Подумав решили что устраивает. По теме : может подскажите хорошие пакеты валидаторов и конвертеров? |
| Автор: Maksym 20.9.2007, 16:53 |
| Fedrus Так чтобы отдельно валидаторы и конверторы -- такого нет, насколько я знаю.. по крайней мере среди популярных продуктов. Есть единая спецификация jsf, которой должны придерживаться все кто решил ее реализовать. Одна из лучших реализаций -- http://myfaces.apache.org. Но сам MyFaces же и предлагает использовать расширение -- http://myfaces.apache.org/tomahawk/index.html, которое умеет значительно больше, чем написано в jsf спецификации. Добавлено через 2 минуты и 2 секунды Например, валидаторы:
|
| Автор: Fedrus 20.9.2007, 16:58 |
| Огромное спасибо за ответ. |
| Автор: Fedrus 24.9.2007, 11:53 | ||
| По теме: Используем MyFaces Tomahawk, у валидаторов есть атрибут message там и можно указывать текст)) но вот проблемка появилась с выводом текста сообщения. При использовании <h:message for= все ок выводит. Но при использовании <h:messages выводит какойто квадратик и все, могу конечьно написать для каждого поля massage но считаю что так не очень правильно. пробовал t:massages не помогло. Еще один вопрос : при использовании атрибута required можно ли задавать текст ошибки не через бандлы( вроде гдето видел атрибут mesagesRequired ) Добавлено @ 11:58 По первому вопросу оказалось все просто: Нужно в <h:messages добавить showDetail="true" и все ок.Но почемуто не работает style="color:red" Атрибут requiredMesage появился в JSF 1.2 а в MyFaces нет такого( но пришла идея я использую
Нужно чтоб оно еще и обязательным для заполнения было, не могли бы мне кто-нибудь подсказать как изменить регулярное выражение чтоб оно пропускало больше n символов и только буквы и цифры. Заранее спасибо. |
| Автор: Maksym 24.9.2007, 12:42 |
Должно работать. Как вариант попробуй описать стиль отдельно и задать его в styleClass. |
| Автор: Fedrus 24.9.2007, 12:51 | ||
Атрибут requiredMesage появился в JSF 1.2 а в MyFaces нет такого( но пришла идея я использую
Нужно чтоб поле еще и обязательным для заполнения было, не могли бы мне кто-нибудь подсказать как изменить регулярное выражение чтоб оно пропускало больше n символов и только буквы и цифры.(и тогда можно просто дописать что поле должно содержать буквы и цифры и более 3 символов) Заранее спасибо. |
| Автор: Fedrus 24.9.2007, 15:00 |
| Регулярное выражение получается таким : [a-zA-Z0-9]{3,} которое говорит что должнобыть не менее 3 символов заданного диапазона но вот когда вообще нет символов оно не срабатывает(( есть какие предложения(вообще странно вычитал это из статьи)) Добавлено через 9 минут и 25 секунд regex везде свой это была к пхп статья сейчас ищу для java найду напишу |
| Автор: nornad 24.9.2007, 15:14 |
Ты уже определись, что тебе надо. Основа одна |
| Автор: Maksym 24.9.2007, 15:27 | ||
Это не хорошо, ко всем ресурсам нужно доступаться через какую-нибудь реализацию ResourceBundle (который физически может доставать их откуда угодно: .properies, .xml, DB, другие источники) -- это типовой подход (а использование любых hardcoded вещей -- гвоздь в гроб нормальной архитектуры). |
| Автор: Fedrus 24.9.2007, 15:33 |
| Основа одна имплементация разная в PHP ^[a-zA-Z0-9]+$ будеть говорить что обязательно один символ и возможно более в заданном диапазоне а у меня ничего кроме того, что в заданном диапазоне, не говорит и пустое значение пропускает( Добавлено @ 15:37 Дело в том что мой непосредственный начальник не хочет использовать ResourceBundle (( Эх надо подуамть как его убедить в обратном... Надо чтоб подходила строка состоящая из 3 и более букв или цифр |
| Автор: nornad 24.9.2007, 16:07 |
Что значит пропускает? Оно (пустое значение) и не должно попадать в матч-резалт. Твоё же выражение этого и не позволяет. А крышу и бакс в явовских регэкспах тоже можно юзать. |
| Автор: Fedrus 24.9.2007, 16:27 | ||
| Спасибо за помощь и прошу прощения за непонятность излагания вопроса. На JSF странице у поле
Если в это поле вводить 1или 2 символа , или 3 и более символов в которых есть спец символы, выбрасывается ошибка . А вот когда в поле ничего не введено ничего не выбрасывается. Это так и должно быть!блин (исправил) А крышу и бакс он сам здесь ставит |
| Автор: Fedrus 24.9.2007, 16:58 |
| Я могу использовать ResourceBundle могу там описать текст ошибки которая выбрасывается при незаполнеии поля с атрибутом required. Но там может быть лиш текст одного вида мол : Поле #{ЛААЛА} обязательно для заполнения и больше 3 символов. А если мне надо будет больше 4 или еще что. Может ктонить знает как сделать так чтоб в любом случае вызывался <t:validateRegExpr ?? |
| Автор: Zamuta 25.9.2007, 00:28 |
| С выходом 6-го нетбинса и его встроенными woodstock'овскими компонентами можно к любому компоненту (который по смыслу допускает валидацию) повесить необходимый requiredMessage, converterMessage или validatorMessage. |
| Автор: Fedrus 25.9.2007, 09:29 |
| Cпасибо за вариант) Ну я еще раз поговорил с начальником, и объяснил необходимость и удобства использования ResourceBundle. |
| Автор: Fedrus 25.9.2007, 13:57 | ||||||
| Вот так дааа я удивлен проблема осталась с выводом своего текста ошибки required поля. Возможно из-за использования MyFaces. я описал ее значение в messages.properties :
на странице сначала пробовал:
Потом искал в гугле и попробовал так:
Не почему-то не берется текст ошибок из messages.properties пробовал и javax.faces.validator.LengthValidator.MINIMUM тоже не берется ( а #{msgs.fed} нормально работает. МОжет кто сталкивался с этой проблемой и знает решение? |