Jsf 表不刷新
我有一个由报告行组成的表。绑定到复选框值更改事件的backbean方法是获取行ID并用该ID填充数组(rowsToBeRemoved)。另一个方法获取此数组并从reportlist类中删除对象:Jsf 表不刷新,jsf,javabeans,objectdataprovider,Jsf,Javabeans,Objectdataprovider,我有一个由报告行组成的表。绑定到复选框值更改事件的backbean方法是获取行ID并用该ID填充数组(rowsToBeRemoved)。另一个方法获取此数组并从reportlist类中删除对象: ObjectListDataProvider reportList = new ObjectListDataProvider(); List<RowKey> rowsToBeRemoved=new ArrayList(); Integer rowsToBeRemovedIndex = 0;
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);
}
ObjectListDataProviderReportList=新ObjectListDataProvider();
List rowsToBeRemoved=new ArrayList();
整数rowsToBeRemovedIndex=0;
对于(RowKey rowToBeRemoved:rowToBeRemoved){
试试{
System.out.println(“rowToBeRemoved.toString()”+rowToBeRemoved.toString());//输出:rowToBeRemoved.toString()行键[0]
Report=(Report)reportList.getObject(rowToBeRemoved);
System.out.println(“report.getId()”+report.getId());//输出:report.getId()199|
Query resultQuery=queryGeneration(report.getId());
List dropTableQueries=resultQuery.getResultList();//生成了用于删除r表的查询
对于(int i=0;i我认为这与您所寻找的类似:
这不仅刷新了页面的一部分,还刷新了整个页面。你的意思是我应该实现Ajax4jsf吗?你的回答给了我线索。JSF中的表更新有问题。我没有实现Ajax,而是将onClick=“setTimeout('#{user$recentreports.updateReportList()}',500}”我的表触发了backbean中已经定义的方法。它解决了我的问题。非常感谢。