2011-10-18 15 views
0

私はレポートの行からなるテーブルを持っています。チェック・ボックスの値変更イベントに関連付けられたバック・ビーン・メソッドは、行IDを取得していて、配列(rowsToBeRemoved)にこのIDを移入しています。もう一つの方法は、この配列を取得し、reportlistクラスからオブジェクトを削除します。テーブルが更新されません

ObjectListDataProvider reportList = new ObjectListDataProvider(); 
List<RowKey> rowsToBeRemoved=new ArrayList(); 
Integer rowsToBeRemovedIndex = 0; 

for(RowKey rowToBeRemoved:rowsToBeRemoved){ 

      try {     
       System.out.println("rowToBeRemoved.toString()" + rowToBeRemoved.toString()); // outputs: rowToBeRemoved.toString()RowKey[0] 

       Report report = (Report) reportList.getObject(rowToBeRemoved); 

       System.out.println("report.getId()" + report.getId()); //outputs: report.getId()199| 


       Query resultQuery = queryGeneration(report.getId()); 
       List<String> dropTableQueries = resultQuery.getResultList(); // generated the queries to drop r tables 


       for(int i=0; i<dropTableQueries.size(); i++){ 

        String aDropTableQuery; 
        aDropTableQuery = dropTableQueries.get(i); 
        System.out.println("adroptableuery" + aDropTableQuery);// get single drop table query. outputs adroptableueryDROP TABLE r_199_0 
        entityManager.createNativeQuery(aDropTableQuery); 
        System.out.println("entitymanager dropTableQueries is invoked");//OK 
        reportList.removeObject(rowToBeRemoved); 
        System.out.println("removeObject");//OK 
        if (reportList.isRemoved(rowToBeRemoved)){ 
         System.out.println("object removed");//OK 
        }      
        reportList.commitChanges(); 
        System.out.println("commitchanges");//OK 

       } 
       reportJpaController.delete(report); 
       reportList.removeRow(rowToBeRemoved); 
       reportList.commitChanges(); 
       analyzerResultService.drop(report.getId().longValue()); 
       //rowsToBeRemoved.remove(rowsToBeRemovedIndex); 
      } catch (Exception e) { 
       error("Cannot delete report with row key " + rowToBeRemoved + e); 
      } 

コードが細かい実行し、reportlistからオブジェクトを削除しますが、その後、私のテーブルには、混合reportlistが表示されます。ページを更新すると、レポートリストが正しい順序で表示されます。そうでない場合は表示されません。また、混在状態で行を削除しようとすると、正しい順序であるかのようにレポートが削除され、間違ったレポートが削除されて終了します。私が説明できることを願って..何が間違っているの?

答えて

2

私は、これはあなたが探しているものに似ていると思う:How to refresh entire JSF page from the backing bean

このdoesntのちょうどかかわらず、ページの一部を更新しますが、完全なページ。

+0

私はAjax4jsfを実装すべきですか? – lamostreta

+0

はい、それは – samn

+0

答えが私に手がかりを与えたかもしれません。 JSFでテーブルの更新に問題がありました。 Ajaxを実装する代わりに、onClick = "setTimeout( '#{user $ recentreports.updateReportList()}'、500}"を私のテーブルに置いて、バックベイですでに定義されたメソッドをトリガーします。 。 – lamostreta

関連する問題