У меня есть задача CAF webMethods с большой формой с кнопкой сохранения и кнопкой отправки. Многие элементы формы проходят проверку. Пользователь должен иметь возможность нажать «Сохранить» и отправить форму в серверную модель, чтобы ее можно было сохранить как данные задачи без запуска проверки. Нажатие «Отправить» должно активировать проверку.
Как мне настроить страницу для этого? Это такое нормальное требование, и я застрял!
2 ответа
Это не очень весело.
- Дайте вашей кнопке "Сохранить" красивый идентификатор. Скажем, saveButton
Создайте в своем Java-коде метод получения, который возвращает логическое значение. Внутри него верните true, если идентификатор кнопки является одним из отправленных полей, в противном случае - 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 }); }
В каждом поле, которое должно быть обязательным, кроме Save, привяжите атрибут Validation-> required к вашему геттеру validationRequired.
Вот и все! Очень утомительно с большим количеством полей на экране, но работает.
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, data-time, сопоставляются с полями пользовательского интерфейса и используется преобразование, тогда это может не сработать, если в эти поля введены неправильные данные.
Похожие вопросы
Связанные вопросы
Новые вопросы
jsf
JavaServer Faces (JSF) - это среда представления модели-представления, обычно используемая для создания веб-приложений на основе форм HTML. Используя стандартные компоненты и набор визуализации, HTML-представления с сохранением состояния могут быть определены с помощью Facelets или JSP-тегов и могут быть привязаны к модели данных и логики приложения с помощью компонентов поддержки.