JSF Очистка лица после каждого запроса - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть страница отчетов, которая отправляет пользовательские запросы для извлечения данных. Если для запроса нет данных, я добавляю в сеанс facemessage- «Нет данных» и связываю его с кнопкой отправки, чтобы она отображалась рядом с кнопкой. Когда пользователь изменяет запрос и повторно отправляет его, я хочу, чтобы сообщение «без данных» было очищено. Я не мог найти способ сделать это. Я не смог найти никаких сообщений в сеансовой карте или карте запросов, поэтому я не мог использовать removemessage (). Итак, в настоящее время я использую хакерскую установку, установив в сообщениях лиц пустое резюме и детализацию. Как очистить сообщение для каждого отправленного запроса?

Спасибо.


BalusC

Не удалось найти кнопку ответа, поэтому я редактирую исходное сообщение

Вот что у меня есть: JSF 1.2, Richfaces 3.3

Основным компонентом для моей страницы отчета является область видимости сеанса. На странице есть выпадающее меню для выбора типов отчетов и кнопка отправки, подключенная к действию (genrep). Кнопка связана с тегом rich: message.

Когда тип отчета выбран и отправлен, genrep () проверяет базу данных, чтобы увидеть, есть ли какие-либо данные, если она не существует, она создает сообщение Faces, устанавливает сводку и детализацию «Нет данных» и добавляет их к кнопке отправки. с помощью метода addmessage лицаcontext.

Когда пользователь отправляет другой запрос, содержащий данные, genrep () получает поток ответов из FaceStext, устанавливает тип контента равным «application / vnd.ms-excel» и записывает в него данные. Закрывает и очищает поток и вызывает responsecomplete (). Кроме этого, я все еще вижу сообщение «нет данных» рядом с кнопкой из предыдущего запроса «нет данных».

Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2011

Когда пользователь отправляет другой запрос, содержащий данные, genrep () получает поток ответов из FaceStext, устанавливает тип содержимого «application / vnd.ms-excel» и записывает в него данные.Закрывает и очищает поток и вызывает responsecomplete ().За исключением случаев, я все еще вижу сообщение «нет данных» рядом с кнопкой из предыдущего запроса без данных.

Итак, вы предоставляете файл для загрузки, но вы ожидаететекущая страница, чтобы обновить также.Это невозможно из-за природы HTTP.Вы не можете отправить два ответа обратно на один запрос (один для загрузки файла и другой для новой страницы).Лучшее, что вы можете сделать, это позволить клиенту отправить два запроса или скрыть сообщение, используя строку JavaScript в атрибуте onclick.Последний больше подходит в данном конкретном случае.

...