当 t:datascroller 在 t:dataTable 之前时,t:dataScroller 变量不会更新
我花了一些时间在这里以及其他网站寻找答案,但没有遇到其他人遇到同样的问题,更不用说建议的答案了。
我了解 myfaces t:datascroller 是在 facelets 中放置在 t:datatable 之前还是之后的功能相同,只要将“for”属性设置为数据表 ID。我有一个 commandLink 会导致发布搜索条件,从而导致修改后的数据集填充数据表。每次 commandLink 发送不同的搜索条件时,数据表本身都会正确更新。当 t:datascroller 放置在标记中的数据表之后时,滚动条每次都会正确更新。但不是放在datatable前面的时候,这种情况下需要两次commandLink的点击,基本上是一次刷新;然后滚动条(此处为滚动条 2)值(pageCountVar,pageIndexVar)比显示的数据表落后一步。滚动条显示先前搜索结果的变量。
不是 JSF2 专家,我尝试过的一些事情没有成功: 1. true 和 false for the immediate= for scroller 和 datatable 2. forceId=,在滚动器上将此设置为 true 会导致 goToLast 元素按钮停止工作,所以删除了它 3. 将 datascroller 和数据表作为同一个 panelGroup 的子项 4. 对所有 datascroller 变量尝试 $ 而不是 # 5. 完全限定“for =”属性的值 6. 尝试了 commandButton,以及用于触发帖子的 commandLink
我在 Tomcat 7.0.47 中运行 tomahawk21 1.1.14 + mojarra 2.1.6。
非常感谢您提供任何帮助。
<div id="my_datatable_div">
<div id="scroll2_div">
<h:panelGroup rendered="${!myData.hasRows}">No folders found.</h:panelGroup>
<t:dataScroller id="scroll_2"
for="my_datatable"
style="margin:auto;padding:0;border:10px solid #ff0000;"
rowsCountVar="rowsCount"
displayedRowsCountVar="displayedRowsCountVar"
firstRowIndexVar="firstRowIndex"
lastRowIndexVar="lastRowIndex"
pageCountVar="pageCount"
immediate="false"
pageIndexVar="pageIndex"
rendered="${myData.hasRows}"
>
<h:outputFormat value="Filtered :{0}, showing {1}: from {2} to {3}, Page {4}/{5}.">
<f:param value="#{rowsCount}" />
<f:param value="#{displayedRowsCountVar}" />
<f:param value="#{firstRowIndex}" />
<f:param value="#{lastRowIndex}" />
<f:param value="#{pageIndex}" />
<f:param value="#{pageCount}" />
</h:outputFormat>
</t:dataScroller>
</div>
<div id="scroll1_div">
<t:dataScroller id="scroll_1"
styleClass="scroller1Style"
paginatorTableStyle="scroll1PaginatorTableStyle"
paginatorColumnClass="scoller1PaginatorColumnClass"
paginatorActiveColumnClass="scroller1PaginatorActiveColumnClass"
for="my_datatable"
fastStep="10"
pageCountVar="pageCount"
pageIndexVar="pageIndex"
paginator="true"
paginatorMaxPages="9"
paginatorTableClass="paginator"
paginatorActiveColumnStyle="font-weight:bold;"
rendered="${myData.shouldShowPaginator}"
immediate="false">
<f:ajax execute="my_datatable scroll_2 scroll_1" render="my_datatable scroll_2 scroll_1 "/>
<f:facet name="first" >
<h:graphicImage style="border:0;margin-right:15px;" library="icons20121211" name="Beginning-16x16.png" />
</f:facet>
<f:facet name="last">
<h:graphicImage style="border:0;margin-right:0;" library="icons20121211" name="Last-16x16.png" />
</f:facet>
<f:facet name="previous">
<h:graphicImage style="border:0;margin-right:15px;" library="icons20121211" name="Previous-16x16.png" />
</f:facet>
<f:facet name="next">
<h:graphicImage style="border:0;margin-right:15px;margin-left:15px;" library="icons20121211" name="Next-16x16.png" />
</f:facet>
<f:facet name="fastforward">
<h:graphicImage style="border:0;margin-right:15px;" library="icons20121211" name="FastForward-16x16.png" />
</f:facet>
<f:facet name="fastrewind">
<h:graphicImage style="border:0;margin-right:15px;" library="icons20121211" name="FastRewind-16x16.png" />
</f:facet>
</t:dataScroller>
</div>
<t:dataTable id="my_datatable" forceId="true"
immediate="true"
styleClass="my_datatable_style"
headerClass="standardTable_Header"
footerClass="standardTable_Header"
rowClasses="standardTableRowClass"
rowOnMouseOver="this.style.backgroundColor='#FAFF67'"
rowOnMouseOut="this.style.backgroundColor='#F5F5F5'"
rowOnClick="this.style.backgroundColor='#FFE0E0'"
var="dataItem"
value="#{myData.list}"
first="#{myData.firstRowIndex}"
preserveDataModel="false"
rows="#{myData.rowCount}">
<t:column styleClass="${myData.columnStyleFor(dataItem)}">
.....
</t:column>
</t:dataTable>
</div>