我有一个页面,其设置如下,网址如下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
获取数据的类没有这个。
By "不再有权访问id
“ 我的意思是 :
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")
returns null
。另外,int id
来自我的支持 bean(通过o:viewParam
in the f:metadata
遭受同样的命运。
我知道有一些方法可以捕捉ViewExpiredException
,但这不是我想要的。我需要页面使用请求参数简单地重新加载所有值(在本例中id
)在用户不知情的情况下。
我(认为我)需要一个@ViewScoped
管理bean来控制这个复杂的表和所有参数等。
我对此感到茫然。我尝试过构建自己的ViewHandler
尝试让它简单地重建(模仿刷新)页面,并尝试使用PrimeFaces
ajaxExceptionHandler
除其他解决方案外。但所有这些都会出错并显示出来。我只想访问我的请求参数my.page.com/table.xhtml
?id=123
来自支持豆。
任何帮助,将不胜感激。
我正在运行:
- Tomcat 7
- 莫贾拉2.2.6
- 全能面孔 1.8.1
- Primefaces 5.0