1

setMultipartConfig動的に追加されたサーブレットを呼び出すと、request.getParts();アップロードされたファイルを含める必要があるときに空のコレクションが返されます。

JSP

<!DOCTYPE html>
<html>
  <head>
      <meta charset="utf-8">
  </head>
  <body>
    <form action="/{context here}/hello" method="post" enctype="multipart/form-data">
      <input type="file" name="avatar">
      <button>Go</button>
    </form>
  </body>
</html>

サーブレット:

@WebServlet( "/hello" )
public class HelloServlet extends HttpServlet {
    private static final long serialVersionUID = 1;

    @Override
    protected void doGet( HttpServletRequest request, HttpServletResponse response )
    throws ServletException, IOException {
        request.getRequestDispatcher( "/hello.jsp" ).forward( request, response );
    }
    @Override
    protected void doPost( HttpServletRequest request, HttpServletResponse response )
    throws IOException, ServletException {
        // Here an empty collection even if I do select a file...
        request.getParts();
    }
}

動的に追加するリスナー

@WebListener
public class HelloListener implements ServletContextListener {
    @Override
    public void contextInitialized( ServletContextEvent event ) {
        Dynamic registered = event.getServletContext().addServlet( "hello", HelloServlet.class );
        registered.addMapping( "/hello" );
        registered.setMultipartConfig( getMultiPartConfig() );
    }
    @Override
    public void contextDestroyed( ServletContextEvent event ) {}

    private MultipartConfigElement getMultiPartConfig() {
        String location = "";
        long maxFileSize = -1;
        long maxRequestSize = -1;
        int fileSizeThreshold = 0;
        return new MultipartConfigElement(
            location,
            maxFileSize,
            maxRequestSize,
            fileSizeThreshold
        );
    }
}

マルチパート構成を動的に追加されたサーブレットで動作させるにはどうすればよいですか?

使用: JBoss EAP 6.1

4

1 に答える 1

0

宣言を削除@WebServlet( "/hello" )すると問題が解決します

于 2013-10-11T10:02:17.187 に答える