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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как перезаписать сообщения ошибки валидации? Struts2 
V
    Опции темы
Ares4322
Дата 29.3.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток!
Использую Struts2 и валидацию типа double. При вводе не-double значения выводится англоязычное сообщение. Можно ли сообщение переписать на русский и если можно, то как?
PM MAIL   Вверх
MaxPayneC
Дата 29.3.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

private Applicant applicant;

....

    @Validations(
            conversionErrorFields = {
                    @ConversionErrorFieldValidator(fieldName = "applicant.birthDate", message = "Недопустимая дата рождения."),
                    @ConversionErrorFieldValidator(fieldName = "applicant.salary", message = "Недопустимая заработная плата.")}
    )
@Override
public String execute()
{
....
}

//тут геттер и сеттер для applicant

PM   Вверх
Ares4322
Дата 30.3.2010, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо. Но я имел ввиду другое. Struts выводит свои сообщения. На английском. Как их убрать? Искал в исходниках библиотеки, но не нашел
PM MAIL   Вверх
MaxPayneC
Дата 30.3.2010, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



То есть как сделать так, чтобы вместо, а не в дополнение к сообщениям стратс :"Invalid field value "..." выводился ваш текст?
PM   Вверх
Ares4322
Дата 30.3.2010, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так точно. Именно это)
PM MAIL   Вверх
MaxPayneC
Дата 30.3.2010, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Способ кривой, но лучше я не знаю:
1. В том же пакете, что и класс-экшн, содержащий валидируемые поля, создаем файл package.properties.
2. В нем делаем записи вида
Код

invalid.fieldvalue.birthdate=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0434\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f.
invalid.fieldvalue.graduate_id=\u0417\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.

Где то, что после второй точки (birthdate, graduate_id) - это названия полей экшна.
Так как ява не понимает юникода в проперти-файлах, прогоняем эти файлы через утилиту native2ascii. Где ее найти в винде, точно не знаю, в линукс JVM от сан прописывает ее в path.
Код

native2ascii package.properties t && mv t package.properties

После этого мы в файле должны увидеть что-то вроде того, что написано в "коде" выше.

Способ второй, для ajax-валидации, которой пользовался я (тоже кривой):
Я переписал javascript-метод, который добавляет к полям формы ошибки валидации так, чтобы он добавлял только последнюю ошибку:
Код

/**
 * Метод добавляет к полям формы сообщения об ошибках.
 *
 * @param form Форма, подвергшаяся валидации.
 * @param errors Объект, содержащий сообщения об ошибках.
 */
function showValidationErrors(form, errors)
{
    StrutsUtils.clearValidationErrors(form, errors);

    var firstNode = StrutsUtils.firstElement(form);
    var xhtml = firstNode.tagName.toLowerCase() == "table";
    if (errors.fieldErrors)
    {
        for (var fieldName in errors.fieldErrors)
        {
            if (errors.fieldErrors[fieldName].length > 0)
            {
                var i = errors.fieldErrors[fieldName].length - 1;
                if (xhtml)
                {
                    addErrorXHTML(form.elements[fieldName], errors.fieldErrors[fieldName][i]);
                }
                else
                {
                    addErrorCSS(form.elements[fieldName], errors.fieldErrors[fieldName][i]);
                }
            }
        }
    }
}

Тогда появлялась только последняя случившаяся ошибка (та, сообщение для которой я указывал в аннотациях).
PM   Вверх
Ares4322
Дата 30.3.2010, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Работает, спасибо) А где вообще про это у них написано?
И еще. У меня почему то это сообщение выводится 2 раза. Почему так?
PM MAIL   Вверх
MaxPayneC
Дата 30.3.2010, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Эм.. сообщение два раза выводится скорее всего потому, что валидация проходила два раза. Без дебага и детального изучения вашего приложения сказать точнее не могу.
PM   Вверх
Ares4322
Дата 30.3.2010, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


Опытный
**


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

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



проблему с 2мя сообщениями решил, поставив в package.properties пробел вместо сообщений ошибок)
PM MAIL   Вверх
MaxPayneC
Дата 30.3.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И раньше использовал, и сейчас продолжаю. Если проблема решена - пометьте тред как решенный.

Это сообщение отредактировал(а) MaxPayneC - 30.3.2010, 12:55
PM   Вверх
Ares4322
Дата 1.4.2010, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0938 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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