У меня есть довольно сложная форма с большим количеством исходных данных и блоков проверки допустимости. Для пользователя это довольно занимает много времени (даже более чем час) для завершения этого, таким образом, они хотели бы смочь сохранить черновые данные, даже если это нарушает правила как не вводимые обязательные поля.
Я полагаю, что эта проблема характерна для многих веб-приложений, но не может найти хорошо распознанный шаблон, как это должно быть реализовано. Можно ли советовать, как достигнуть этого?
На данный момент я вижу следующие опции:
Но поскольку Вы видите, что никто не действительно разумен. Нет ли действительно никакое простое решение проблемы?
Это действительно не так просто. Валидация довольно тесно связана с жизненным циклом JSF.
Я бы лично выбрал вариант 1. Это действительно грязная работа, но вы можете просто спрятать ее в служебном классе или около того. Просто возьмите
из корневого каталога просмотра, рекурсивно переберите его дочерние элементы, тем самым проверяя, истинно ли компонент instanceof EditableValueHolder
, сохраните найденную пару id-value в сортировке из Карта
и, наконец, сохраните ее.
В качестве четвертой альтернативы вы можете сохранить все данные независимо, используя ajaxical полномочия. В этом может помочь jQuery .
$.post('/savedraft', $('#formid').serialize());
Для этого требуется только поддержка Javascript на стороне клиента.
Обновление : служебная библиотека JSF OmniFaces имеет обработчик тегов
именно для этой цели. Это действительно было непростое решение, так как для него также требуется специальный
. Он выполняет свою работу, предоставляя настраиваемый экземпляр FacesContext
на этапах проверки и обновления значений модели, который выполняет NOOP в методах validationFailed ()
и renderResponse ()
. Таким образом, компоненты по-прежнему недействительны, а сообщения все еще прикреплены, но он все равно перейдет к значениям модели обновления и вызовет фазы приложения.