Способ кривой, но лучше я не знаю: 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]); } } } } }
|
Тогда появлялась только последняя случившаяся ошибка (та, сообщение для которой я указывал в аннотациях). |