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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Struts+Validator+Regexp, не понятно как работает 
V
    Опции темы
Greg
Дата 16.11.2006, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Доброго времени суток всем.
Вот сегодня наткнулся на недоразумение в Struts Validator.
Итак сначала я писал в методе validate() примерно следущее:
Код

...
if (!name.matches("[\\p{L}\\s]+")) {
    ActionMessage message = new ActionMessage("coffee.errors.name",true);                                                            
    messages.add(ActionMessages.GLOBAL_MESSAGE,message);
    errors.add(messages);
    return errors;
}
...

Как думал до сегодняшнего дня,этому выражению удоволетворяет строка,содержащая любые юникодные буквы и пробельные символы,что собственно и подтверждалось на практике.
Но когда я решил использовать Validator framework всё заработало по другому :
Код

<field
        property="name"
        depends="required,mask">
           <arg key="coffee.errors.name"/>
                <var>
                    <var-name>mask</var-name>
                     <var-value>[\p{L}\s]+</var-value>
                 </var>
</field>

Здесь получаем,что "aaa" не соответсвует выражению,но "aaa aa" - соответсвует.Может кто нибудь понимает в чём дело ?


Это сообщение отредактировал(а) Greg - 16.11.2006, 00:16
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
Greg
Дата 18.11.2006, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Попробывал записать в файл строку: [\p{L}\s]+
Потом в коде считал её оттуда и проверил на соответствие
Код

 String pattern = "AAA";
        System.out.println("str="+str);
        try {
            if (pattern.matches(str)) {
                System.out.println("matches");
            } else {
                System.out.println("!matches");
            }
        } catch (Exception e) {
            System.out.println("exception");
        }

Всё работает как положено ...
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
Greg
Дата 19.11.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Может тогда кто подскажет как заюзать регулярные выражения в случае, если пользователь вводит нац. символы ?
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
LSD
Дата 20.11.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Используй [\w\s]+.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Greg
Дата 20.11.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Цитата из JDK 1.4.2
Цитата

\w    A word character: [a-zA-Z_0-9]

Нужна возможность вводить русские буквы.
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
LSD
Дата 21.11.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Можно задать свой блок: [a-zA-Z_0-9а-яА-Я].


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Greg
Дата 22.11.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Sorry! Просто я думал про то,что регулярные выражения Struts основываются на java.util.regex - это не правда ! 
Внимание,в Struts используются свои regex,хотя я не понимаю зачем ?
Выражение [\w\s]+ заменил на ^[\w\s]+$,т.к. с первым тоже нелады какие-то.Теперь все работает как ожидалось.Как нибудь напишу в чём различие regex`ов Struts и Java.

З.Ы. LSD большой сенк, просто не туда подумал  smile 
З.З.Ы. Поставь +1 от меня  smile 

Это сообщение отредактировал(а) Greg - 22.11.2006, 22:30
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
Greg
Дата 25.11.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Всем доброго времени суток еще раз  smile 
Сегодня столкнулся с тем,что в Validator Framework валидация зависит от локали !
Иначе как бы обьяснить соответствие \w буквам национального алфавита !
(Для заметки: регулярные выражения в Struts соответсвуют им в Perl 5)
Но это еще что,у меня 123-123 соответсвует выражению [\d-]+ в английской и не соответствует
в русской локали  smile 
Самый существенный недостаток - это отвратительное качество документации ...
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
LSD
Дата 26.11.2006, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Умолчальную локаль можно заменить, если это поможет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Greg
Дата 26.11.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



LSD, опять ты меня выручил !
Я по запарке не обратил внимания на то,что раньше определил валидацию для ru.Спасибо огромное,Ваш форум наверное самый информативнфый из всех где я когда то был.
--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
LSD
Дата 27.11.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 5
Всего: 538



Bitte!


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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