我建議在生成複雜報告時使用JDBC連接選項,如果只是爲了直接編寫SQL所獲得的靈活性。但是,在你的視圖層中有一個JDBC連接侵入看起來不太好,所以如果不瞭解Spring,我會說把實際的報表生成轉移到服務層,讓它將JasperPrint對象(它是可序列化的)返回到視圖層它可以呈現。
這是一個簡單的香草RMI示例,與我的做法非常相似。我想這可以轉換成某種類型的Spring bean。該彈簧想到
public interface ReportService extends Remote {
public JasperPrint fillReport(final JasperReport report, final Map reportParameters)throws RemoteException, JRException;
}
public class ReportServiceImpl implements ReportService {
final Connection connection;
public ReportServiceImpl(final Connection connection) {
this.connection = connection;
}
public JasperPrint fillReport(final JasperReport report, final Map reportParameters) throws RemoteException, JRException {
return JasperFillManager.fillReport(report, reportParameters, connection);
}
}
一個修改中,在沒有故意將是有fillReport方法採取的報告名或路徑作爲參數,而不是實際的JasperReport對象和具有服務層負載它(和高速緩存它,因爲加載報告是一個相對昂貴的操作)。
讓我知道如果你想讓我充實這個例子的某些部分,我必須警告你,儘管我是一個桌面/擺動程序員,只有在web前端的基本經驗。
感謝您的意見這是非常重要的,我同意將Connection對象傳遞給視圖層它是一個非常糟糕的主意,這聽起來好多了,在服務層中生成報告。如果你能爲我提供這些例子,我將非常感激。謝謝。 – OJVM 2010-10-01 13:47:45
我忘了寫我的電子郵件,這是在gmail點com ojvm24點 – OJVM 2010-10-01 13:48:26
現在我通過連接到視圖層,但我會嘗試你的解決方案,謝謝。 – OJVM 2010-10-05 16:03:06