0

私は2つのポートレットを持っています:最初のポートレットにはデータテーブルAが含まれ 、2番目のポートレットにはデータテーブルBが含まれています。2つのポートレットが同じページに表示されます。データテーブルBのコマンドボタンをクリックした後、データテーブルAを更新したい。

コマンドボタンによって呼び出されるメソッドには、次のコードが含まれています。

OnDemandRenderer onDemandRenderer = getRenderManager().getOnDemandRenderer("RENDER_GROUP");
onDemandRenderer.requestRender();

しかし、それは機能しません。誰か助けてくれませんか?いくつかのヒント?助けてくれてありがとう!

4

1 に答える 1

0

静的変数を使用して問題を解決しました。Datatable A は、マネージド Bean で次のように入力された dataModel オブジェクトを使用します。

dataModel=new ListDataModel(globalDD.getDetailsList());

ここで、マネージド Bean の globalDD は次のとおりです。

private GlobalDocumentDetails globalDD;
public GlobalDocumentDetails getGlobalDD() {
  return SessionBeanUtility.getGlobalDD();
}
public void setGlobalDD(GlobalDocumentDetails globalDD) {
  this.globalDD = globalDD;
}

そして、SessionBeanUtility.getGlobalDD() は

public static GlobalDocumentDetails getGlobalDD(){
    if (FacesUtil.getPortletSession().getAttribute(GLOBAL_DD_BEAN_KA, PortletSession.APPLICATION_SCOPE) == null)
    {
        new GlobalDocumentDetails();
        FacesUtil.getPortletSession().setAttribute(GLOBAL_DD_BEAN_KA, new GlobalDocumentDetails(), PortletSession.APPLICATION_SCOPE);
    }
    return (GlobalDocumentDetails)FacesUtil.getPortletSession().getAttribute(GLOBAL_DD_BEAN_KA, PortletSession.APPLICATION_SCOPE);
}

データテーブル B にはショッピング カートのアイテムが含まれており、カートは静的オブジェクトです。2 つのデータテーブルの actionListeners メソッドで質問に書いたコードを使用して、両方を更新します。

于 2013-03-25T15:35:06.520 に答える