2

我不知道为什么它不起作用。我试图在我的 servlet 中接受 multipart-formdata 但request.getPart("")没有显示。我正在使用 glassfish 3.1.2 服务器。使用的 Tha 框架是用于开发应用程序的 vaadin。谁能帮我解决这个问题?

4

7 回答 7

5

假设您的具体问题确实是您的 IDE 没有getPart()在自动完成时显示该方法,那么这只能意味着该项目未配置为与 Servlet 3.0 兼容的项目。该方法即在 Servlet 3.0 中引入

您没有告诉任何关于您正在使用的 IDE 的任何信息,并且您的问题历史也没有提供任何线索,所以让我们假设它是 Eclipse,它被广泛使用。在这种情况下,您需要在 2 个位置对其进行配置,前提是您已将动态 Web 项目与 Servlet 3.0 兼容容器作为项目属性中的目标运行时正确关联(否则HttpServletRequest根本不会编译):

  1. 在项目属性的Project Facets部分中,动态 Web 模块版本必须设置为 3.0。

    在此处输入图像描述


  2. 如果您的 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>
    
于 2013-01-11T15:07:08.500 回答
2

我有同样的问题。这就是我最终发现的问题。我依赖于:

<dependency>
    <groupId>com.googlecode.jsontoken</groupId>
    <artifactId>jsontoken</artifactId>
    <version>1.1</version>
</dependency>

结果发现 jsontoken 依赖于 servlet-api 2.5。所以解决问题的方法很简单:

<dependency>
    <groupId>com.googlecode.jsontoken</groupId>
    <artifactId>jsontoken</artifactId>
    <version>1.1</version>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
于 2015-07-02T19:17:37.777 回答
1

maven.. pom.xml.. 修改这个依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
</dependency>

servlet api 2.5 不起作用

于 2015-04-21T02:32:11.363 回答
0

对于那些后来偶然发现的人,如果 BalusC 建议的解决方案不能为您解决问题,请检查provided运行时与服务器运行时不匹配的库的构建路径。

例如,如果您的 Mavenpom.xml包含提供类似这样的 java EE 库的条目...

        <dependency>
            <groupId>org.apache.openejb</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5.0-1</version>
            <scope>provided</scope>
        </dependency>

...它们可能会干扰您的 IDE 所认为的运行时环境,该运行时环境将用于提供代码完成建议。

跟踪问题的最简单方法是找出HttpServletRequest类的来源。

于 2013-09-19T08:03:28.877 回答
0

我有同样的问题,我想与你分享,以防其他人遇到同样的问题:

就我而言,我有一个自动下载的 j2ee.jar,它的版本可能很旧。它位于 Libraries --> j2ee Runtime Library 下(stackoverflow 不允许我在 eclipse 中添加图像 - 在 Project Explorer 中 - 展开项目 --> Java Resources --> 库 --> J2ee Runtime Library --> j2ee.jar)

我去了这个文件所在的文件系统(你在eclipse中的文件旁边有这个位置)并用一个更新的jar替换了它。你可以从这里拿罐子。

然后清理并重建项目。

于 2015-06-22T05:23:58.710 回答
0

正如 Bjørn 的回答中所指出的,一个可能的原因是一个相互冲突的工件servlet-api (Servlet 2.5 spec)。就我而言,就是这种依赖

<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>
于 2020-08-05T10:34:00.767 回答
-1

嗨朋友们,我也遇到了类似的问题,我会告诉你我做了什么。

我正在使用 eclipse juno 和 Tomcat 7 服务器。确保使用最新的 servlet API jar。Tomcat 7 将仅支持动态模块版本 2.5 不超过该版本。所以使用更高版本的Tomcat或更低的动态模块版本就可以了。

还有一件事:打开您的 servlet api jar 并查看它是否包含“Part”,您可以轻松检查它。

于 2017-11-20T06:36:53.063 回答