У меня есть страница с настройкой, как показано ниже, с URL-адресом типа my.page.com/table.xhtml?id=123
:
+----------------------------------------------+
|Meta information |
|----------------------------------------------|
| Search Fields Submit btn |
|----------------------------------------------|
| |
| |
| Big p:dataTable |
| with rowExpansion |
| |
|----------------------------------------------|
| Pager |
+----------------------------------------------+
id=123
— это параметр запроса, который управляет содержимым таблицы результатов. Все действия только перезагружают таблицу данных с помощью AJAX
.
id
загружается через это:
<f:metadata>
<o:viewParam name="id" value="#{dataTable.id}" />
<f:viewAction action="#{dataTable.initialize}" />
</f:metadata>
Все это работает нормально, пока сеанс не истечет. В этот момент ничего не работает. Я не могу получить данные, так как у меня больше нет доступа к рассматриваемому id
, а вызов классов DAO
, извлекающих данные, не имеет этого.
Под "больше нет доступа к id
" я имею в виду следующее:
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")
возвращает null
. Кроме того, int id
из моего поддерживающего компонента (который загружается через o:viewParam
в f:metadata
) постигнет та же участь.
Я знаю, что есть способы поймать ViewExpiredException
, но это не то, что мне нужно. Мне нужно, чтобы страница просто перезагрузила все значения, используя параметр запроса (в данном случае id
) без ведома пользователя.
Мне (думаю, мне) нужен управляющий компонент @ViewScoped
для управления этой сложной таблицей, всеми параметрами и т. д.
Я в растерянности по этому поводу. Я попытался создать свой собственный ViewHandler
, чтобы попытаться просто перестроить (имитировать обновление) страницы, и попытался использовать PrimeFaces
ajaxExceptionHandler
среди других решений. Но все они получают ошибку и отображают ее. Я просто хочу иметь доступ к моему параметру запроса my.page.com/table.xhtml
?id=123
из вспомогательного компонента.
Любая помощь будет оценена по достоинству.
Я работаю:
- Томкэт 7
- Мохарра 2.2.6
- Омнифейс 1.8.1
- Праймфейс 5.0