2011-01-30 33 views
8

Estoy intentando utilizar getServletContext() getRealPath ("/"), pero me siguen dando este error:.¿Por qué getservletcontext no se encuentra?

no puede encontrar el símbolo símbolo: Método getServletContext() ubicación: Interfaz javax. servlet.http.HttpSession String path = session.getServletContext(). getRealPath ("/") + "layout/tiles /" + reportPath; enter image description here

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 

     session = request.getSession(); 
     Map params = new HashMap(); 
     String reportPath = "maintenance/jasper/report01.jasper"; 
     exportToPDF(reportPath , response, params); 

     return null; 
    } 

    protected void exportToPDF(String reportPath , HttpServletResponse response, Map jasperParams) throws Exception { 

      String path = session.getServletContext().getRealPath("/") + "layout/tiles/" + reportPath ; 

      if (!new File(path).exists()) { 
       throw new Exception("The path doesn''t exist. </br>" + path); 
      } 
      InputStream input = new FileInputStream(path); 

      jasperParams.put("REPORT_LOCALE", Locale.US); 

      JasperPrint jasper = JasperFillManager.fillReport(input , jasperParams, new JRBeanCollectionDataSource(Vehicles)); 

      response.setContentType("application/pdf"); 
      ServletOutputStream output = response.getOutputStream(); 

      JRExporter exporter = new JRPdfExporter(); 

      exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasper); 
      exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output); 

      exporter.exportReport(); 
      output.close(); 


    } 

Tiene alguna idea de por qué está sucediendo esto?

Gracias Ritesh, hice lo que me dijo, pero ahora me sale un mensaje nuevo

enter image description here

------ -------- EDITAR

comprobación mi dispatcher-servlet.xml encontré que es un poco diferente del código que se muestra en este web. No sé cómo podría afectar mi proyecto, pero me gustaría saber si hay un enfoque diferente para obtener el mismo resultado que usar la sesión. getServletContext() .getRealPath ("/")

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
       value="org.springframework.web.servlet.view.tiles2.TilesView" /> 
</bean> 
<bean id="tilesConfigurer" 
     class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/tiles.xml</value> 
     </list> 
    </property> 
</bean> 
+0

Puede consultar este documento http: // netbeans.org/kb/68/web/quickstart-webapps-spring.html y vea si hay algo diferente en la configuración de su proyecto? – Ritesh

+0

¿Qué versión de los informes de Jasper está usando y qué jarras de informes de Jasper ha agregado en su proyecto? – Ritesh

+0

@ Ritesh-JasperReports 3.7.1 y ... esto es bastante embarazoso, ya que no sabía qué frascos agregar, agregué todos los frascos incluidos en las carpetas "lib" y "dist" que vienen con jasperreports- 3.7.1-project.zip. – eddy

Respuesta

4

getServletContext() se añadió en Servlet 2.3. No estaba allí en 2.2, vea Servlet 2.2 javadoc

Así que la única explicación es que su proyecto está validando el código contra la versión anterior.

getServletContext() también está en la clase de controlador de Spring que parece estar utilizando. Así que en lugar de session.getServletContext().getRealPath("/"), se le multa con sólo getServletContext().getRealPath("/")

Editado 30 de Jan: Jasper Reports archivos jar de limpieza

me han verificado que tiene jasperreports-3.7.1-project.zip versión antigua de servlet. tarro. Recomiendo el siguiente:

  1. Eliminar todos los archivos JAR que haya agregado a partir de la carpeta lib jasperreports-3.7.1-project.zip pero mantener los archivos jar de la carpeta "dist".

  2. Agregue el archivo jar uno por uno en función de los mensajes de error de compilación. No agregue ningún archivo jar que también esté disponible en la carpeta TOMCAT-HOME/lib y no agregue ningún archivo jar Spring. Como sabe que el proyecto de informes de jaspe tiene archivos jar antiguos, primero vea si netbeans proporciona esos archivos jar, si no, intente con las últimas versiones de otros repositorios como http://repo1.maven.org/maven2/. La descarga de Spring Framework con dependencias también tiene varios archivos comunes que puede usar.

  3. Consulte cualquier recurso en línea para obtener más información sobre los archivos jar requeridos. El siguiente enlace describe la integración con jasper reports versión 1.2.5 en netbeans: http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.html Pero necesita algo así relacionado con la versión 3.7.1.

+0

* "código de validación en contra de ..." *: lo más probable es que * compile * con una versión anterior de las API. –

+0

Lo siento, soy nuevo en java. ¿Podría decirme cómo puedo cambiar la versión? ¿Dónde puedo encontrar este tarro? – eddy

+0

De la pregunta (y captura de pantalla), no está claro si se trata de un error de compilación. No hay información sobre cómo se está construyendo el proyecto. Si está utilizando Eclipse IDE, haga clic con el botón derecho en el nombre del proyecto, haga clic en Propiedades, seleccione 'Project Facet' y cambie la versión de 'Dynamic Web Module'. Eso arreglará el error de validación en IDE. – Ritesh

Cuestiones relacionadas