我有一个rich:dataTable和一个rich:dataScroller。当我单击datascroller时,我的dataTable不会自动刷新以显示正确的页面。但是,如果我按下刷新按钮,则dataTable会显示正确的页面。
我做错了什么?
这是我的代码:
<rich:dataTable id="applicantsTable"
binding="#{applicantListManBean.applicantsDataTable}"
value="#{applicantListManBean.applicantsList}" var="applicant"
rows="10" width="650">
<h:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{applicant.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Email" />
</f:facet>
<h:outputText value="#{applicant.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Action" />
</f:facet>
<h:commandLink action="#{applicantListManBean.showApplicantProducts}"
rendered="true">
<h:graphicImage value="/images/icons/view.png" width="15" height="15"
alt="view" />
<f:setPropertyActionListener
target="#{applicantListManBean.tempApplicant}" value="#{applicant}" />
</h:commandLink>
<h:commandLink action="#{applicantListManBean.deleteApplicant}"
rendered="true">
<h:graphicImage value="/images/icons/delete.png" width="15"
height="15" alt="view" />
<f:setPropertyActionListener
target="#{applicantListManBean.tempApplicant}" value="#{applicant}" />
</h:commandLink>
</h:column>
</rich:dataTable>
<rich:datascroller id="applicantsScroller" for="applicantsTable"
reRender="sc1" maxPages="7" page="#{applicantListManBean.scrollerPage}" />
更新:附加了Javascript错误:
答案 0 :(得分:2)
删除reRender="sc1"
。您已从RichFaces演示中复制粘贴此内容,但您已删除“sc1”组件,因此可能会发生javascript错误,导致表无法刷新。
另外,请确保dataTable
和datascroller
被<h:form>..</h:form>
包围(均为一种形式)
答案 1 :(得分:1)
问题是h:commandLink。它以某种方式为富人创造了问题:数据表。使用a4j:commandLink或s:link(如果你使用Jboss Seam)。
答案 2 :(得分:1)
您可能需要考虑使用t:saveState标记或将处理程序放在会话范围内。可能发生这种情况的原因是因为您在请求范围内拥有处理程序,并且由于commandLink是另一个请求,因此无法找到要回发的原始处理程序实例。通过简单地将此saveState放在这里,我的工作开始了。
只是一个想法。
答案 3 :(得分:0)
将rich:datatable
中的reRender
和rich:datascroller
的ID放入表中,如下所示。这对我有用:
<f:view>
<a4j:keepAlive beanName="datosCtrlBean" ajaxOnly="true"/>
<h:form>
<rich:dataTable reRender="sc2" width="300" id="carList" rows="10" columnClasses="col"
value="#{datosCtrlBean.datos}" var="category" id="myTable" >
<f:facet name="header">
<rich:columnGroup>
<h:column>
<h:outputText styleClass="headerText" value="Make" />
</h:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{category}" />
</h:column>
<f:facet name="footer">
<rich:datascroller align="left" for="carList" id="sc2" ajaxSingle="true" reRender="myTable" limitToList="myTable"/>
</f:facet>
</rich:dataTable>
</h:form>
</f:view>
答案 4 :(得分:0)
是错的..
尝试:
<rich:dataTable width="300" id="carList" rows="10" columnClasses="col"
value="#{datosCtrlBean.datos}" var="category" >
<rich:datascroller align="left" for="carList" id="sc2" ajaxSingle="true" reRender="carList" limitToList="carList"/>