2011-01-30 4 views
8

Я пытаюсь использовать getServletContext() getRealPath ("/"), но я получаю эту ошибку:.Почему getervletcontext не найден?

не может найти символ символ: метод getServletContext() местоположение: интерфейс 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(); 


    } 

Есть ли у Вас идея, почему это происходит?

Благодаря Ritesh, я сделал то, что вы сказали мне, но теперь я получаю новое сообщение

enter image description here

------ EDIT --------

проверки мой dispatcher-servlet.xml Я обнаружил, что он отличается от кода, показанного на этом web. Я не знаю, как это может повлиять на мой проект, но мне нравится знать, есть ли другой подход к получению того же результата, что и использование сеанса. 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

Можете ли вы проверить этот документ http: // netbeans.org/kb/68/web/quickstart-webapps-spring.html и посмотреть, нет ли чего-то другого в настройке вашего проекта? – Ritesh

+0

Какую версию отчетов Jasper вы используете и какие банки отчетов Jasper вы добавили в свой проект? – Ritesh

+0

@ Ritesh-JasperReports 3.7.1 и ... это довольно неловко, так как я не знал, какие банки добавить, я добавил все банки, включенные в папки «lib» и «dist», которые поставляются с jasperreports- 3.7.1-project.zip. – eddy

ответ

4

getServletContext() был добавлен в Servlet 2.3. Его не было в 2.2, см. Servlet 2.2 javadoc

Так что только объяснение заключается в том, что ваш проект проверяет код на старую версию.

getServletContext() также есть в классе контроллера Spring, который, как вам кажется, используется. Таким образом, вместо session.getServletContext().getRealPath("/"), вам будет хорошо только с getServletContext().getRealPath("/")

Edited 30 января: Jasper Reports файлы банку очистки

Я проверил, что jasperreports-3.7.1-project.zip имеет старую версию сервлета. баночка. Я рекомендую следующее:

  1. Удалить все файлы фляги, добавленные из Lib папки jasperreports-3.7.1-project.zip но держать банку файлы из папки «Dist».

  2. Добавить файл jar один за другим на основе сообщений об ошибках компиляции. Не добавляйте файл jar, который также доступен в папке TOMCAT-HOME/lib, и не добавляйте файл Spring jar. Поскольку вы знаете, что проект проекта jasper имеет старые файлы jar, сначала посмотрите, не предоставляют ли netbeans эти банки, а затем не пытаются использовать последние версии из других репозиториев, таких как http://repo1.maven.org/maven2/. Загрузка Spring framework с зависимостями также имеет несколько общих файлов, которые вы можете использовать.

  3. Просмотрите любой онлайн-ресурс, чтобы получить дополнительную информацию о необходимых файлах jar. Следующая ссылка описывает интеграцию с отчетами jasper версии 1.2.5 в netbeans: http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.html Но вам нужно что-то подобное, относящееся к версии 3.7.1.

+0

* «проверка кода против ...» * - более вероятно, что это * компиляция * в отношении старой версии API. –

+0

Извините, я новичок в java. Не могли бы вы рассказать мне, как я могу изменить версию? где я могу найти эту банку? – eddy

+0

Из вопроса (и скриншот) неясно, является ли это ошибкой компиляции. Информация о том, как строится проект, отсутствует. Если вы используете Eclipse IDE, щелкните правой кнопкой мыши по имени проекта, выберите свойства, выберите «График проекта» и измените версию «Динамического веб-модуля». Это исправит ошибку проверки в среде IDE. – Ritesh

Смежные вопросы