Почему getservletcontext не найден? - PullRequest
8 голосов
/ 30 января 2011

Я пытаюсь использовать getServletContext (). GetRealPath ("/") , но я получаю эту ошибку:

не может найти символ символ: метод getServletContext () расположение: интерфейс javax.servlet.http.HttpSession String path = session.getServletContext (). GetRealPath ("/") + "layout / tile /" + 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();


    }

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

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

enter image description here

------ РЕДАКТИРОВАТЬ --------

проверяя мой dispatcher-servlet.xml Я обнаружил, что он немного отличается от кода, показанного на этом веб . Я не знаю, как это может повлиять на мой проект, но что мне нравится знать, есть ли другой подход к получению того же результата, что и при использовании сеанса. 1026 *

<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>

1 Ответ

4 голосов
/ 30 января 2011

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

Так что единственное объяснение состоит в том, что ваш проект проверяет код на соответствие старой версии.

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

Отредактировано 30 января: Jasper Reports очистка jar-файлов

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

  1. Удалите все файлы jar, которые вы добавили, из папки lib файла jasperreports-3.7.1-project.zip, но сохраните файлы jar из папки "dist".

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

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

...