1

当 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>
4

0 回答 0