1

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;
   }

レコードは返されますが、表示されません..

なぜこれが起こるのですか?どこが間違っていますか?

4

1 に答える 1

2

あなたの間違いはここにあります。

listener="#{equityBean.onChange(event)}"

オブジェクトはeventEL スコープに存在しません。引数を削除してください。特に指定する必要はありません。JSF は、必要なアクション リスナー引数自体を提供します。

listener="#{equityBean.onChange}"

他のすべてのlistener属性actionListenerについても同様です。actionコンポーネントの属性でのみ、UICommandカスタム引数を指定できます (ランダムで存在しない変数名ではなく、実際の値で渡す必要があります)。

于 2012-05-24T04:56:09.253 に答える