在Stripes中上传文件,如何使用DefaultMultipartWrapperFactory

时间:2011-04-15 20:07:21

标签: file-upload nullpointerexception stripes

我正在尝试开发一个允许用户删除文件的小型Stripes项目,ActionBean的基本实现如下:

public class UploadActionBean extends BaseActionBean{

private FileBean fileBean;

private final String fileUpload="/WEB-INF/jsp/file-upload.jsp";

public void setFileBean(FileBean fileBean){

    this.fileBean=fileBean;
}

public FileBean getFileBean(){

    return this.fileBean;
}

@DefaultHandler
public Resolution goToFile(){

    return new ForwardResolution(fileUpload);
}

public Resolution upload() throws IOException{

    System.out.println(fileBean.getFileName());

    fileBean.getContentType();

    fileBean.getSize();

    fileBean.save(new File("/Users/enricoiorio/Desktop"));

    return new ForwardResolution(fileUpload);
}

}

正如我所说的非常简单,jsp就是这样,也很简单:

 <s:form beanclass="stripesbook.action.UploadActionBean" enctype="multipart-form/data">

<s:file name="fileBean"/>

<s:submit name="upload" value="upload"/>

该应用程序似乎正确部署,应用程序启动没有问题,但只要我点击上传我得到以下异常:

net.sourceforge.stripes.exception.StripesRuntimeException: Could not construct a MultipartWrapper for the current request.

从nullPointerException到达:

at net.sourceforge.stripes.controller.multipart.DefaultMultipartWrapperFactory.wrap(DefaultMultipartWrapperFactory.java:151)

我明白我必须使用DefaultMultipartWrapperFactory类的wrap()方法,但是如何? 我正在努力寻找一个解释但没有结果的文档,有什么建议吗?

2 个答案:

答案 0 :(得分:4)

好像你只是缺少Commons FileUpload。尝试将其添加到类路径中,看看它是否有效。

答案 1 :(得分:0)

我遇到了同样的问题。 通过在条带过滤器中添加init参数来解决。

<init-param>
  <param-name>MultipartWrapper.Class</param-name>
  <param-value>net.sourceforge.stripes.controller.multipart.CommonsMultipartWrapper</param-value>
</init-param>