0

あなたの問題が解決されることを願っていますが、私の問題はまだそこにあり、あなたが私がこの問題から抜け出すのを手伝ってくれると思いました。実際には、ユーザーの選択に従って1つずつ公開する複数のイベントがありました。たとえば、ユーザーが、、、を選択Seasonして からService、更新ボタンをクリックします。DateFromDateTo

更新ボタンがクリックされたとき、私は上記のロジックを使用して、以下のコードを使用してすべてのデータを取得しました

public void onClick$ref(Event event){

    if(lbox_service.getSelectedIndex() != 0 || lbox_season.getSelectedIndex() != 0)
    {
        if(lbox_service.getSelectedIndex() == 0)
        {
            setService_id("0");
        }
        else
        {
            setService_id(lbox_service.getSelectedItem().getValue().toString());
        }
        if(lbox_season.getSelectedIndex() == 0)
        {
            setSeason_id("0");
        }
        else
        {
            setSeason_id(lbox_season.getSelectedItem().getValue().toString());
        }

        System.out.println("Service Index 11 : "+ lbox_service.getSelectedIndex());
        System.out.println("Season Index 11 : "+ lbox_season.getSelectedIndex());

        EventQueue evtQ = EventQueues.lookup("myEventQueue", EventQueues.APPLICATION, true);
        //evtQ.publish(new Event("service_id", self, lbox_service.getSelectedItem().getValue().toString()));
        //evtQ.publish(new Event("season_id", self, lbox_season.getSelectedItem().getValue().toString()));

        evtQ.publish(new Event("service_id", self, getService_id()));
        evtQ.publish(new Event("season_id", self, getSeason_id()));

        //evtQ.publish(new Event("onClickRef", null, lbox_service.getSelectedItem().getValue().toString()));
        //evtQ.publish(new Event("onClickRef", null, lbox_season.getSelectedItem().getValue().toString()));

        /*.publish(new Event("onClickRef", null, lbox_service.getSelectedItem().getValue().toString()));
         EventQueues.lookup("myEventQu", EventQueues.DESKTOP, true).publish(new Event(
             "onClickRef", null, lbox_season.getSelectedItem().getValue().toString()));*/
    }
    else
    {
        setService_id("0");
        setSeason_id("0");

        EventQueue evtQ = EventQueues.lookup("myEventQueue", EventQueues.APPLICATION, true);
        evtQ.publish(new Event("service_id", self, getService_id()));
        evtQ.publish(new Event("season_id", self, getSeason_id()));

        System.out.println("Service Index : "+ lbox_service.getSelectedIndex());
        System.out.println("Season Index : "+ lbox_season.getSelectedIndex());
    }
}

今、私はすべての値を公開し、その後、それらの公開された値をサブスクライブControllerする新しい 実行を行いました。以下のコードを使用

public void doAfterCompose(Component comp) throws Exception {

    super.doAfterCompose(comp);
    EventQueues.lookup("myEventQueue", EventQueues.APPLICATION, true).subscribe(new EventListener() {

        public void onEvent(Event event) throws Exception {

            /*String service = (String) event.getData();

            logger.info("Servive $$$$$$$$$ " + service);
            //String season = (String) event.getData();
            //logger.info("Season $$$$$$$$$ " + season); */     
            if("service_id".equals(event.getName())) {
                setService_id((String) event.getData());
                baseController.setFilter_bar(true);
                System.out.println("Service Id :" +event.getData());
            }
            else if("season_id".equals(event.getName())) {
                setSeason_id((String) event.getData());
                baseController.setFilter_bar(true);
                System.out.println("Season Id :" +event.getData());
            }

            /*setService_id((String) event.getData());
            setSeason_id((String) event.getData());*/

            /*if("season_id".equals(event.getName())){
                setSeason_id((String) event.getData());
            }else
            {
                setSeason_id("0");
            }*/
            System.out.println("Filter bar :" +baseController.isFilter_bar());
            if(baseController.isFilter_bar() == true)
            {
                String dateFrom = "";
                String dateTo = "";
                String order = "2";
                List TDRetailers = verificationStoreHibernateDao.getTraditionalRetailers(
                    getService_id(), getSeason_id(), dateFrom, dateTo, order);

                //VerificationStoreHibernateDao storeHibernateDao = new VerificationStoreHibernateDao();
                //List TDRetailers = this.verificationStoreHibernateDao.getTraditionalRetailers(service_id);
                //ListModel listModel = this.retailers.getModel();
                ListModelList listModelList = (ListModelList) retailer.getModel();
                listModelList.clear();
                listModelList.addAll(TDRetailers);
                baseController.setFilter_bar(true);
            }
        }
    });
}

しかし実際には、私の問題はクエリの実行とそれらの公開された値の取得にあります。それらに基づいて、従来のgetTraditionalRetailersクエリを実行できるようになります。

私の問題は

  1. 複数のイベント値を公開する方法。それは私がした正しい方法ですか。

  2. 個別の公開を行ったので、 新しい値を公開するたびにクエリが実行され、その結果、クエリが複数回実行されました。たとえば、2つの値を公開すると、クエリは2回実行され、3つの値を公開すると、クエリは3回実行されます。

彼らの問題は何なのかわかりません。エラーを解決するのを手伝ってください。

4

1 に答える 1

0
  1. EventQueue を介して渡されたイベント オブジェクトは、そこにペイロードを配置する場所です。集計 Event クラスを定義して情報を収集し、まとめて公開するだけです。

  2. (集計イベントを使用して)すべての情報をまとめて公開できれば、これは自動的に解決されます。

于 2011-03-24T06:35:47.123 に答える