2011-01-30 8 views
8

나는 ("/")을 getServletContext() getRealPath를 사용하려고 해요,하지만 난이 오류가 계속 :왜 getservletcontext를 찾을 수 없습니까? .

기호를 찾을 수 없습니다 기호 : 방법 getServletContext() 위치 : 인터페이스 javax의를. servlet.http.HttpSession 문자열 경로 = session.getServletContext(). getRealPath ("/") + "레이아웃/타일 /"+ 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

------ 편집 --------

검사를받을 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> 
getServletContext()
+0

이 문서 http : // netbeans를 확인할 수 있습니까?org/kb/68/web/quickstart-webapps-spring.html을 방문하여 프로젝트 설정에서 다른 것이 있는지 확인하십시오. – Ritesh

+0

어떤 버전의 Jasper 보고서와 Jasper 보고서의 Jar 파일을 프로젝트에 추가 했습니까? – Ritesh

+0

@ Ritesh-JasperReports 3.7.1 and ... jasperreports와 함께 제공되는 "lib"및 "dist"폴더에 포함 된 모든 jar 파일을 추가해야했기 때문에 이것은 매우 당혹 스럽습니다. 3.7.1-project.zip. – eddy

답변

4

는 서블릿 2.3 첨가 하였다. 2.2에 없었습니다. Servlet 2.2 javadoc

프로젝트가 구 버전에 대한 코드의 유효성을 검사한다는 것입니다.

getServletContext() 또한 Spring의 Controller 클래스에있는 것 같습니다. 그래서 그 대신 session.getServletContext().getRealPath("/")의, 당신은 단지 getServletContext().getRealPath("/")

편집 1월 30일와 잘 될 것입니다 : 재스퍼 jar 파일 정리

나는 서블릿의 이전 버전을 jasperreports-3.7.1-project.zip가 있음을 확인했습니다보고합니다. 항아리. 나는 따르는 것이 좋습니다

  1. 는 jasperreports-3.7.1-project.zip의 lib 폴더에서 추가 된 모든 jar 파일을 제거하지만 "DIST"폴더에서 jar 파일을 보관하십시오.

  2. 컴파일 오류 메시지를 기반으로 하나씩 jar 파일을 추가하십시오. TOMCAT-HOME/lib 폴더에서도 사용할 수있는 jar 파일을 추가하지 말고 Spring jar 파일을 추가하지 마십시오. jasper 보고서 프로젝트에 오래된 jar 파일이 있다는 것을 알고 있기 때문에 먼저 netbeans에서 해당 jar 파일을 제공하는지 확인하십시오. 그렇지 않으면 http://repo1.maven.org/maven2/과 같은 다른 저장소의 최신 버전을 사용해보십시오. 의존성이있는 Spring 프레임 워크 다운로드에는 사용할 수있는 몇 가지 공통 파일이있다.

  3. 필요한 jar 파일에 대한 자세한 정보는 온라인 리소스를 확인하십시오. 다음 링크는 jasper와 netbeans 버전 1.2.5의 통합에 대해 설명합니다 : http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.html 그러나 3.7.1 버전과 관련된 것이 필요합니다.

+0

* "validating code against ..."* - 이전 버전의 API와 비교하여 * 더 많은 가능성이 있습니다. –

+0

죄송합니다, 자바를 처음 사용했습니다. 어떻게 버전을 바꿀 수 있는지 말해 주시겠습니까? 이 항아리는 어디에서 찾을 수 있습니까? – eddy

+0

질문 (및 스크린 샷)에서 컴파일 오류인지 여부가 명확하지 않습니다. 프로젝트가 어떻게 구축되고 있는지에 대한 정보는 없습니다. Eclipse IDE를 사용하는 경우 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 '프로젝트 패싯'을 선택하고 '동적 웹 모듈'의 버전을 변경하십시오. IDE에서 유효성 검사 오류를 수정합니다. – Ritesh

관련 문제