Primefaces 3.2 のタブビューの各タブに 2 つの異なるデータテーブルを表示したいと考えています。そこにあるデータテーブルは、onChange イベントで設定された「type」変数に基づいてデータを取得します。しかし、私の問題は、onChange イベントがまったく発生しないことです。私のタブビューコードをチェックして、これが起こっている理由を確認してください:
<h:form id="frm">
<p:tabView activeIndex="#{equityBean.activeIndex}">
<p:ajax event="tabChange" listener="#{equityBean.onChange}" update=":frm"/>
<p:tab title="NSE" binding="#{equityBean.tbn}">
<p:dataTable binding="#{equityBean.dt}" value="#{equityBean.scripList}" var="scrip">
<f:facet name="header">
Scrip Symbol
</f:facet>
<h:outputText value="#{scrip.scripSymbol}"/>
<f:facet name="header">
Company Name
</f:facet>
<h:outputText value="#{scrip.companyName}"/>
<f:facet name="header">
Volume
</f:facet>
<h:outputText value="#{scrip.totalTradedVolume}"/>
</p:dataTable>
</p:tab>
<p:tab title="BSE" binding="#{equityBean.tb}">
</p:tab>
</p:tabView>
</h:form>
豆:
public void onChange(TabChangeEvent event) {
type=event.getTab().getTitle();
}
編集: データテーブル値を取得するためのBeanコード:
public List<MasterScrip> getScripList() {
scripList=new ArrayList<MasterScrip> ();
scripList=getScripByVolumeType(type);
return scripList;
}
private java.util.List<service.MasterScrip> getScripByVolumeType(java.lang.String type) {
service.StatelessWebService port = service.getStatelessWebServicePort();
return port.getScripByVolumeType(type);
}
編集:jpaクエリ
public Collection<MasterScrip> getScripByVolumeType(String type)
{ コレクション sm=null;
sm=em.createQuery("select m from MasterScrip m where m.type = :type order by m.totalTradedVolume").setParameter("type", type).setMaxResults(2).getResultList(); // retuens no records
return sm;
}
レコードは返されますが、表示されません..
なぜこれが起こるのですか?どこが間違っていますか?