我有动态标签... 由于大多数列都相同,我编写了自定义组件以在选项卡中显示表。
当我点击每个标签时,它尊重lazy datamodel加载方法被调用..多次切换标签后,如果我点击选项卡,则不会调用加载方法...所以显示旧数据...不从数据库获取
我希望每次调用load()方法。我的意思是如果我点击tab它应该调用数据模型load()方法..
怎么做?
这是我的代码:
<p:tabView id="vzTabView" styleClass="vzTabView" dynamic="true" >
<p:ajax event="tabChange" listener="#{bean1.onTabChange}" process="@this" />
<c:forEach items="#{bean1.values}" var="tab">
<p:tab id="#{tab.uniqueTabId}s" title="#{tab.label}" rendered="#{bean1.isSteeringListRendered(tab)}">
<h:form id="#{tab.uniqueTabId}s-Form" onkeyup="avoidEnter(event)">
// custom component
<pc:pcData id="id1" gridId="grid1" bean="#{bean2}" isCostumer ="false"/>
</h:form>
</p:tab>
<p:tab id="#{tab.uniqueTabId}c" title="#{tab.label}" rendered="#{bean1.isCostumerListRendered(tab)}">
<h:form id="#{tab.uniqueTabId}c-Form" onkeyup="avoidEnter(event)" >
<pc:pcData id="id2" gridId="grid2" bean="#{bean3}" isCostumer ="true"/>
</h:form>
</p:tab>
</c:forEach>
</p:tabView>
//自定义组件
<cc:interface>
<cc:attribute name="id" required="true" />
<cc:attribute name="bean" />
<cc:attribute name="gridId" />
<cc:attribute name="isCostumer" />
</cc:interface>
<cc:implementation>
<p:dataTable id="${cc.attrs.gridId}" editMode="cell" var="row"
selectionMode="single" paginator="true"
rowsPerPageTemplate="20,50,100,150,200"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
currentPageReportTemplate="({currentPage} #{msgs.of} {totalPages})"
value="#{cc.attrs.bean.lazyDataModel}" lazy="true"
rowKey="#{row.id}" editable="true" rows="20" styleClass="pst-grid">
....
.....
</p:datatable>
我在点击标签后尝试使用remoteCommand技巧,通过更新表仍然没有运气。