Web framework with JasperReports integration?
What web development frameworks natively support JasperReports?
Consider the following form as an example:
<form name="report" method="post">
  <input type="hidden" name="REPORT_PATH" value="reports/Names" />
  <input type="hidden" name="REPORT_FILE" value="List" />
  <input type="hidden" name="REPORT_FORMAT" value="pdf" />
  <input type="hidden" name="REPORT_EMBED" value="false" />
  Name: <input type="text" name="report_Name" 开发者_运维百科value="" /><br />
  Date: <input type="text" name="report_Date" value="" /><br />
  <input type="submit" name="View" value="View" />
</form>
The framework would pass the report_ parameters to JasperReports, which in turn runs reports/Names/List.jasper, and then sends a PDF attachment to the browser.
In general, the framework can:
- Configure the report (i.e., the hidden REPORT_variables)
- Use a web FORM for setting report parameters (i.e., the report_variables)
- Handle configuring database connection, report execution, etc.
I don't care about the technical minutia on how the integration works, as long as it is simple.
Try Dynamic Jasper.
When I started making JasperReports with JSF I didn't find any framework to fit exactly what I was looking for. In one point I wanted to open source the engine I made (the company rejected).
Anyway, my idea is so simple, I built a general Servlet to receive all types of report actions then dispatch to specific factories. Most of the work was in Javascript.
Anyway, try DJ, if it fails you, I would be happy to explain more about my own engine.
PHP/Java Bridge:
<?php                                                                           
checkjavaExtension();                                                           
function report_parse_post_parameters() {                                       
  // Automatically extract report parameters (data types converted in report).  
  //                                                                            
  $params = new java('java.util.HashMap');                                      
  // Get the names of the form elements that contain lists of comma-separated
  // values.                                                                 
  //                                                                         
  $reportArrays = explode( ',', $_POST['report_Array'] );                    
  // Convert each of the comma-separated values into a list of values.
  //                                                                  
  foreach( $reportArrays as $reportArray ) {                          
    $arrays = array_filter( explode( ',', $_POST[ $reportArray ] ) ); 
    // Map the values to a java.util.ArrayList.
    //                                         
    $arrayList = new java( 'java.util.ArrayList' );
    foreach( $arrays as $value ) {
      $arrayList->add( $value );  
    }                             
    // Pass the list of values into the report (without the "report_" prefix).
    //                                                                        
    $params->put( substr( $reportArray, 7 ), $arrayList );                    
    // Remove the value from the POST array.
    //                                      
    unset( $_POST[ $reportArray ] );        
  }                                         
  // Don't pass the list of array names into the report.
  //                                                    
  unset( $_POST['report_Array'] );
  // Pass the remaining POST "report_" variables as report parameters.
  //
  foreach( $_POST as $name => $value ) {
    if( strpos( $name, "report_" ) === 0 ) {
      $params->put( substr( $name, 7 ), $value );
    }
  }
  return $params;
}
function report_execute( $report ) {
  $user = 'username';
  $password = 'password';
  $report = realpath("/home/reports/$report.jasper");
  // Load the MySQL database driver.
  //
  java( 'java.lang.Class' )->forName( 'com.mysql.jdbc.Driver' );
  // Attempt a database connection.
  //
  $conn = java( 'java.sql.DriverManager' )->getConnection(
    "jdbc:mysql://localhost:3306/database?user=$user&password=$password" );
  $params = report_parse_post_parameters();
  // Use the fill manager to produce the report.
  //
  $fm = java('net.sf.jasperreports.engine.JasperFillManager');
  $pm = $fm->fillReport($report, $params, $conn);
  header('Cache-Control: no-cache private');
  header('Content-Description: File Transfer');
  header('Content-Disposition: attachment, filename=report.pdf');
  header('Content-Type: application/pdf');
  header('Content-Transfer-Encoding: binary');
  java_set_file_encoding("ISO-8859-1");
  $em = java('net.sf.jasperreports.engine.JasperExportManager');
  $result = $em->exportReportToPdf($pm);
  header('Content-Length: ' . strlen( $result ) );
  echo $result;
}
?>
The Spring framework supports JasperReports.
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论