我正在尝试使用 getParts() from import javax.servlet.http.Part; 但它告诉我“无法解析方法‘getParts()’
package connec;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.LinkedList;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.entJa.sd.FileMeta;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
(...)
public class MultipartRequestHandler {
public static List<FileMeta> uploadByJavaServletAPI(HttpServletRequest request) throws IOException, ServletException {
List<FileMeta> files = new LinkedList<FileMeta>();
Collection<Part> parts = request.getParts();
(...)
知道为什么找不到这个方法吗?我知道它带有 servlet 3.0,但我使用的是 3.1,甚至尝试下载 4.0(未完成的版本)。
Error:(29, 41) java: cannot find symbol
symbol: method getParts()
location: variable request of type javax.servlet.http.HttpServletRequest
最佳答案
我正在使用 Intellij IDEA,因此我获得了默认的 jar 库 - 包含 JavaEE-API-5。我下载了 javaee-api-7.0.jar(带有 Maven),现在它可以工作了!
准确地说,发生的事情是:Java EE 5 包含 Servlet API 2.5,它没有 getParts() 方法,因为它仅在 Servlet API 3.0 中添加 - 另一方面,Java EE 7 包含 Servlet API 3.1。
关于java - Servlet 3.1 - 部件 - 方法 getParts() 未解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40020465/