2011-01-30 25 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、EDIT --------

チェック------私はあなたが私に言ったことでしたが、今私は新しいメッセージ

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

このドキュメントhttp:// netbeansをチェックアウトできますか。org/kb/68/web/quickstart-webapps-spring.htmlを参照してください。 – Ritesh

+0

どのバージョンのJasperレポートを使用していますか、どのJasperレポートのJARファイルをプロジェクトに追加しましたか? – Ritesh

+0

@ Ritesh-JasperReports 3.7.1 and ...これは非常に困惑しています。なぜなら、私はどのjarを追加するか分からず、jasperreportsに付属する "lib"と "dist" 3.7.1-project.zip。 – eddy

答えて

4

getServletContext()は、サーブレット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ファイルを1つずつ追加します。 TOMCAT-HOME/libフォルダにあるjarファイルを追加しないでください。また、Spring jarファイルを追加しないでください。ジャスパー報告プロジェクトに古いjarファイルがあることを知っているので、最初にnetbeansがそれらのjarファイルを提供しているかどうかを確認してから、http://repo1.maven.org/maven2/のような他のリポジトリの最新バージョンを試してみてください。依存関係を持つSpringフレームワークのダウンロードには、いくつかの一般的なファイルもあります。

  3. は、必要なjarファイルの詳細情報を取得するための任意のオンラインリソースを確認してください。以下のリンクは、ジャスパーとの統合について説明しています。ネットバンのバージョン1.2.5を報告します:http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.htmlしかし3.7.1バージョンに関連するものが必要です。

+0

* "validating code against ..." * - 旧バージョンのAPIと比較してコンパイル*される可能性があります。 –

+0

申し訳ありませんが、私はjavaを初めて使いました。どうすればバージョンを変更できるのか教えてください。この瓶をどこで見つけることができますか? – eddy

+0

質問(およびスクリーンショット)から、コンパイルエラーかどうかは不明です。プロジェクトの構築方法に関する情報はありません。 Eclipse IDEを使用している場合は、プロジェクト名を右クリックし、プロパティをクリックして「プロジェクトファセット」を選択し、「動的Webモジュール」のバージョンを変更します。 IDEで検証エラーが修正されます。 – Ritesh

関連する問題