我有一个像下面这样的数据表
<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>
我有一个面板名称,如下面的详细信息
<p:panel>
<h:outputText value="#{userTable.userId}"/>
<h:outputText value="#{userTable.userName}"/>
</p:panel>
我的UserTable托管bean是视图范围的。功能就像当用户点击commandLink时,我的方法将获得用户的详细信息。获取详细信息后,dataTable将隐藏,并将显示面板。对于用户来说,它几乎看起来像是一个不同的页面。
问题在于,当用户点击任何userId(commandLink)时,他将完美地获得细节。然后他可以使用浏览器后退按钮并尝试通过单击另一个userId来获取详细信息。但在这种情况下,用户获得的结果与之前的结果相同。错误日志中没有任何内容。
我发现在视图范围内托管bean的某个地方,非ajax操作方法存在此问题。但是我需要将它保存在视图中,以便通过排序和分页来维护表状态。因此,每当用户按下后退按钮时,我都可以在选择之前显示相同的屏幕。
请帮忙。提前谢谢。
答案 0 :(得分:0)
键盘上的后退按钮确实不会调用新的HTTP请求。猜测这是出了什么问题。使用列表和详细信息页面实际上更糟糕。我一直在努力解决同样的错误几个小时。
请参阅:Difference between jsf actionListener(param) and propertyListener when using back button on keyboard