我有一个像下面非Ajax方法ViewScoped给予同样的结果托管bean
<p:dataTable value="#{userTable.tempLists}" var="user"
sortBy="#{user.userId}" sortOrder="descending"
paginator="true"
rows="10" paginatorPosition="bottom">
<p:column headerText="User ID" sortBy="#{user.userId}">
<p:commandLink ajax="false" value="#{user.userId}" action="#{userTable.showDetails(user.userId)}"/>
</p:column>
<p:column headerText="User Name" sortBy="#{user.userName}">
<h:outputText value="#{user.userName}">
</h:outputText>
</p:column>
</p:dataTable>
一个DataTable我有一个小组名称的细节,如以下
<p:panel>
<h:outputText value="#{userTable.userId}"/>
<h:outputText value="#{userTable.userName}"/>
</p:panel>
我的用户表管理bean是视图作用域。功能就像当用户点击commandLink时,我的方法将获得用户的详细信息。获取详细信息后,dataTable将隐藏并显示面板。对于用户来说,它几乎就像一个不同的页面。
问题在于,当用户点击任何userId(commandLink)时,他将完美地获得细节。然后他可以使用浏览器后退按钮,并尝试通过单击另一个用户标识来获取详细信息。但在这种情况下,用户得到的结果与上一个相同。并没有在错误日志中。
我发现在视图范围管理bean的某个地方,这个问题与非ajax动作方法存在。但我需要保持它在viewcoped维护表状态与排序和分页。所以无论何时用户按下返回按钮,我都可以在选择前显示相同的屏幕
请帮忙。提前致谢。
我感到困惑的流程:你希望用户停留在同一页面上,只是表现出它不同的元素?如果有一个'f:viewParam name =“userId”',那么当空表显示表时加载用户实体(如果可能,则使用'f:viewAction')。 – mabi
@mabi是的,你是对的实施。但是f:viewParam用于设置get请求的url中的值。在我的情况下,我通过命令链接发布了请求。 –
你想让它保持那种方式吗?因为如果你允许反向导航,把这个状态放在URL中是个好主意。 – mabi