Вопрос

Можно ли в JSF решить следующий сценарий проверки / обновления с использованием инфраструктуры проверки JSF (так называемые средства проверки, немедленные, требуемые и т. д.)?

+-- Form ----------------------------------------------------+
|                                                            |
| Field A: |____________|v|                                  |
| Field B: |____________|v|                                  |
| Field C: |____________|v| Button: [Update C using A and B] |
| Field D: |____________|v| Button: [Update D using B and C] |
|                                                            |
| More Fields: ...                                           |
|                                                            |
| Button : [Submit All]                                      |
+------------------------------------------------------------+

Если все поля являются раскрывающимися и когда нажатие кнопки [Обновить C] приведет только к проверке A, B и C, но не к остальным, нажатие кнопки [Обновить D] приведет к тому, что поля B, C и D вызовут только проверка и нажатие кнопки [Отправить все] приведут к проверке всех полей.

Это было полезно?

Решение

Технически, да, это можно сделать с помощью валидаторов / немедленных. Тем не менее, это не было бы особенно просто.

Если вы добавите валидаторы, логика в [Обновление C с использованием A и B] будет работать только в том случае, если все валидаторы пройдут или если для его непосредственного атрибута задано значение true. Если для его непосредственного атрибута установлено значение true, логика кнопки не может прочитать отправленные значения компонентов, используя getValue или любой объект, с которым связан компонент; он должен использовать getSubmittedValue (плохая идея).

Лучшим подходом было бы сделать логику проверки в управляемом компоненте, к которому привязаны все элементы управления. Вы можете поместить логику проверки в любые методы, к которым привязаны ваши кнопки. Используйте кнопку [Отправить все] , чтобы сохранить проверенные данные в базе данных / хранилище данных / в любом другом месте.

Другие советы

Я обычно делал подобные вещи с Ajax, где я отправлял части, которые меня интересуют, на сервер, проверял / обрабатывал там и возвращал результаты на страницу. С другой стороны, это полный обход JSF и его механизмов валидации, поэтому я думаю, что это не самое умное / оптимальное решение ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top