Задача со сохранением кнопок бросает ошибки проверки
-
21-12-2019 - |
Вопрос
У меня есть задача CAF WebMethods, которая имеет большую форму с кнопкой сохранения и кнопкой отправки.Многие элементы на форме имеют проверку.Пользователь должен быть в состоянии ударить сохранить и иметь форму, отправленную в модель задней конечной модели, чтобы ее можно было сохранить как данные задач, без валидации.Удар отправки должен огонь.
Как я могу настроить страницу для этого.Это такое нормальное требование, и я застрял!
Решение
Это не так весело.
- Дайте вашу кнопку сохранения приятный идентификатор.Скажи, СохранитьБуттон
-
Создайте getter в вашем коде Java, который возвращает логию.Внутри его вернитесь, если идентификатор кнопки является одним из представленных полей, в противном случае false:
private boolean validationRequired() { return mapValueEndsWith((Map<String, String>)getRequestParam(), new String[] { "saveButton", // Your save button "anotherButton", // Perhaps another button also shouldn't validate "myForm:aThirdButton" // perhaps you want to be specific to a form }); }
-
В каждом поле, который должен потребоваться, за исключением сохранения, свяжите валидацию-> требуемый атрибут для вашего ValidationRequirequired.
Это все!Очень утомительно с большим количеством полей на экране, но это работает.
p.s.Что такое mapvalueendswith?Просто утилита;Удаленные пробелы для компактности:
private boolean mapValueEndsWith(Map<String, String> haystack, String[] needles) {
for(String needle : needles) if(mapValueEndsWith(haystack, needle)) return true;
return false;
}
private boolean mapValueEndsWith(Map<String, String> haystack, String needle) {
for(String value : haystack.values()) if(value.endsWith(needle)) return true;
return false;
}
.Другие советы
Как я вижу подход, прилагаемый, работает только в том случае, если форма содержит только поля строки типа.Если есть какие-либо другие типы данных, такие как integer, float, время данных сопоставлены на поля ui, и преобразование используется, то это может выйти из строя, если ошибки введены в эти поля.