1

我有一个适用于 servlet 的上传例程。现在我试图把这个例程放在一个 jsf 托管 bean 中,如下所示:

 public void uploadFile() throws IOException, ServletException{

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
    HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();


    Part filePart = request.getPart("item");
    String filename = getFilename(filePart);
    InputStream filecontent = filePart.getInputStream();

    //persist the data here

}

当尝试在服务器上运行它时,当然会出现错误消息:“PWC4016:Request.getPart 在没有多部分配置的情况下被调用。要么将@MultipartConfig 添加到 servlet,要么将 multipart-config 元素添加到 web.xml”

但是我不知道在哪里放置这个注释,我也没有我的托管 bean 的 jsf 生成的 servlet 的名称,所以我也不能把它放到 web.xml 中。将此例程放入托管 bean 通常是一个坏主意,还是应该坚持使用 servlet 变体?

4

1 回答 1

1

@MultipartConfig基本上需要FacesServlet放在. 你不能自己做,但是这已经在即将到来的 JSF 2.2中完成了,包括一个支持 ajax 的新标准<h:inputFile>组件,另见JSF 规范问题 802

在那之前,您最好的选择是获取 3rd 方组件库或自制自定义组件。

于 2012-10-12T09:40:27.703 回答