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