なぜ動かないのかわかりません。サーブレットでmultipart-formdataを受け入れようとしていますが、request.getPart("")
表示されません。Glassfish3.1.2サーバーを使用しています。使用されるフレームワークは、アプリケーションを開発するためのvaadinです。誰かが私がこの問題を解決するのを手伝ってくれる?
7 に答える
具体的な問題が実際に IDE がオートコンプリートでメソッドを表示しなかったことであると仮定するとgetPart()
、それはプロジェクトが Servlet 3.0 互換プロジェクトとして構成されていないことを意味するだけです。つまり、そのメソッドは Servlet 3.0 で導入されました。
正確に使用している IDE については何も言わず、質問の履歴からも手がかりが得られないため、かなり広く使用されているのは Eclipse であると仮定しましょう。その場合、プロジェクトのプロパティでターゲット ランタイムとして動的 Web プロジェクトを Servlet 3.0 互換コンテナーに正しく関連付けている場合は、2 つの場所で構成する必要があります (そうしないと、コンソートはまったくコンパイルされません)。HttpServletRequest
プロジェクトのプロパティのプロジェクトファセットセクションで、動的 Web モジュールのバージョンを 3.0 に設定する必要があります。
IDE が
/WEB-INF/web.xml
ファイルを生成した場合は、その<web-app>
ルート宣言も Servlet 3.0 と一致することを確認する必要があります。そうしないと、実行時に失敗します。<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> </web-app>
maven.. pom.xml.. この依存関係を変更します
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
サーブレット API 2.5 が機能しない
私は同じ問題を抱えていました。他の誰かが同じ問題にぶつかった場合に備えて、あなたと共有したいと思います:
私の場合、自動的にダウンロードされた j2ee.jar があり、そのバージョンはおそらく古いものでした。ライブラリの下にありました-> j2eeランタイムライブラリ(スタックオーバーフローでは画像を追加できないため、Eclipseでは-プロジェクトエクスプローラーで-プロジェクトを展開します-> Javaリソース->ライブラリ-> J2eeランタイムライブラリ-> j2ee.jar)
このファイルが置かれているファイル システム (Eclipse のファイルの隣にある場所) に移動し、それを新しい jar に置き換えました。ここから瓶を取り出すことができます。
次に、プロジェクトをクリーンアップして再構築します。
考えられる理由の 1 つは、Bjørn の回答で指摘されているように、競合するアーティファクトservlet-api (Servlet 2.5 仕様)です。私の場合、それはこの依存関係でした
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client-appengine</artifactId>
<version>1.30.10</version>
競合するライブラリをコンパイルする依存関係を見つけるには、次のように依存関係ツリーをビルドして出力します。
mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree -Dverbose=true
出力の一部:
最後に、アーティファクトを依存関係から除外します
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client-appengine</artifactId>
<version>1.30.10</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>