【发布时间】:2015-07-20 00:21:09
【问题描述】:
我不确定我应该如何描述这个问题。 我目前正在学习 JSF,今天尝试用分页实现类似 ajax reloaded table 之类的东西。
这是我在 JSF 中的代码:
<c:forEach var="pageNo" begin="0" end="${adapter.pagesNumber}">
<c:choose>
<c:when test="#{adapter.currentPage == pageNo}">
<li class="active"><h:commandLink value="#{pageNo+1}" disabled="true" /></li>
</c:when>
<c:otherwise>
<li><h:commandLink value="#{pageNo+1}" action="#{adapter.setCurrentPage(pageNo)}">
<f:ajax render=":#{cc.attrs.tableId} @form" />
</h:commandLink></li>
</c:otherwise>
</c:choose>
我使用 JSF 来自:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
</dependency>
我的目的是让按钮带有页码,突出显示和禁用当前活动的页面按钮(不重新加载相同的页面)。
现在,第一个屏幕截图显示了我在执行任何操作之前的视图:(第一页):
假设我点击了第 6 页,
现在,当我使用带有版本的 JSF 时
<version>2.2.4</version>
我得到了预期的结果:
但是当我打开上面的版本时,例如
<version>2.2.5</version> // tested up to 2.2.11
我得到这样的东西:
点击第 9 页后,我得到了另一个“分页”序列:
1 2 3 4 5 7 8 9 6 10 11
但左下角的当前页面显示它是第 9 页。表格内容也有效。
如果相同的代码在不同的 JSF 版本中工作方式完全不同,有没有人遇到过这样的情况或者我做错了什么?这种奇怪行为的原因是什么?
【问题讨论】:
-
请在此处发布您的 mcve(请参阅 How to Ask)而不是在 pastebin 上
-
我后来发现在将 JSTL 与 JSF 一起使用时可能会出现不一致,从而导致诸如此类的意外行为,但它仍然没有真正解释为什么在 2.2.4 版本中它可以工作(或者至少它试图工作)预期的方式,而不是> 2.2.4。
-
您发布的内容不是 mcve。这是一个sn-p。是的,这很奇怪,但可能是因为其他改进,当进行其他改进时,一些有效的东西(但不是专门设计用来工作的)停止工作。你试过
ui:repeatbtw 吗? -
“其他改进”我的意思是在一般的 jsf 中
-
我明白了。实际上,我通过that answer 找到了我的解决方案。现在我只是好奇,为什么它在打开新版本之前会起作用。谢谢。
标签: ajax jsf-2 pagination jstl