Jsf 回到一页,我失去了状态
我有一个页面,搜索结果按页面排列。当我向前导航到详细视图并向后导航到结果视图时,结果视图将转到第1页。我怎样才能解决这个问题?我正在使用两个ViewScope bean。我尝试了SessionScope,但它也会这样做。最好的方法是什么 结果页Jsf 回到一页,我失去了状态,jsf,jsf-2.2,Jsf,Jsf 2.2,我有一个页面,搜索结果按页面排列。当我向前导航到详细视图并向后导航到结果视图时,结果视图将转到第1页。我怎样才能解决这个问题?我正在使用两个ViewScope bean。我尝试了SessionScope,但它也会这样做。最好的方法是什么 结果页 <f:metadata> <f:viewParam name="lang" value="#{search.language}" /> <f:viewAction action="#{resu
<f:metadata>
<f:viewParam name="lang" value="#{search.language}" />
<f:viewAction action="#{result.init()}" />
</f:metadata>
<h:form>
<ui:repeat value="#{result.recipesView}" var="rec">
<h:link value="#{rec.title}" outcome="recipeshow">
<f:param name="id" value="#{rec.id}" />
</h:link>
<br/>
<h:outputText value="#{rec.id}"/><br/>
<h:outputText value="#{rec.author}"/><br/>
<h:outputText value="#{rec.createDate}"/><br/>
<br/>
</ui:repeat>
<br/>
<ui:repeat value="#{result.pagesArray}" var="page">
<h:commandLink value="#{page.pageNumber}" disabled="#{page.pageDisabled}">
<f:ajax listener="#{result.doPages()}" render="@form"/>
<f:param name="currentPage" value="#{page.pageNumber}"/>
</h:commandLink>
</ui:repeat>
</h:form>
如果您对视图范围内的数据进行操作,例如通过
管理当前页面,只要您通过回发与当前视图交互,它就可用。当您显示详细信息视图时,您不再处理结果视图,因此您的视图信息基本上消失了。因此,当您按下浏览器的“上一步”按钮时,您将返回到第一页(如果页面未缓存)或之前保留的视图(如果页面已缓存),但您将得到一个viewexpiredeexception
要克服这个困难,您需要做的是将信息保存在“后退”按钮指向的URL中。换句话说,放弃使用post链接(
)来分页结果,转而使用get链接(
)。后者将用于发送包含相关信息(当前页面、分页大小、分页顺序等)的新get请求以显示结果。这可以通过使用
和
标记来完成。在这种情况下,当按下“后退”按钮时,将显示带有请求中定义的参数的结果。结果的幂等性是您的情况的关键
因此,您将有一堆
标记来将分页数据保存在结果视图中。您还需要将命令链接更改为普通的
s,其中嵌套的
s也表示分页数据