我有一个页面,其设置如下,网址如下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
来自我的支持 bean(o:viewParam
通过f:metadata
加载)也遭受了同样的命运。
我知道有一些方法可以捕获 a ViewExpiredException
,但这不是我想要的。我需要页面使用请求参数简单地重新加载所有值(在这种情况下id
在用户不知情的情况下使用请求参数(在本例中)简单地重新加载所有值。
我(想我)需要一个@ViewScoped
管理 bean 来控制这个复杂的表和所有参数等。
我对此感到茫然。我尝试构建自己的ViewHandler
以尝试让它简单地重建(模仿刷新)页面,并尝试使用PrimeFaces
ajaxExceptionHandler
其他解决方案。但是所有这些都会出错并显示它。我只想my.page.com/table.xhtml
?id=123
从支持 bean 访问我的请求参数。
任何帮助,将不胜感激。
我正在运行:
- 雄猫 7
- 莫哈拉 2.2.6
- 全方位 1.8.1
- Primefaces 5.0