带有enctype =“multipart / form-data”的表单没有按命令按钮提交

时间:2017-01-16 07:53:06

标签: jsf jsf-2 portlet websphere-portal

我正在WebSphere Portal 8.0.0.3上使用java6,JSF2.0构建测试应用程序以实现文件上载功能。

FileUploadView.xhtml

<h:form enctype="multipart/form-data">
       <input type="file" name="fileItem1" />
       <h:commandButton value="submit" action="#{bean.submit}" />
</h:form>

FileUploadPortlet.java

class FileUploadPortlet extends com.ibm.faces20.portlet.FaceletPortlet{  
      public  void processAction(ActionRequest request, ActionResponse   response) throws PortletException, java.io.IOException {
          boolean  isMultipart = PortletFileUpload.isMultipartContent(request);
    try  {  
      if  (isMultipart) {
        FileItemFactory factory = new DiskFileItemFactory();
        PortletFileUpload upload = new PortletFileUpload(factory);

        List /* FileItem */ items = upload.parseRequest(request);

        Iterator iter = items.iterator();
        while (iter.hasNext()) {
          FileItem item = (FileItem) iter.next();

           if  (item.isFormField()) {
               String name = item.getFieldName();
               String value = item.getString();        


           } else {
           String fileName = item.getName();
           long sizeInBytes = item.getSize();
           System.out.println("FileName is: "+fileName+" Size is: "+sizeInBytes);    

                }
            }
          }
        } catch ( Exception e) {
                System.out.println("SampleFileUploadPortlet.processAction() Error occured");
                e.printStackTrace();
      }

    }
    }

portlet.xml中

<portlet>
    <portlet-name>FileUploadView</portlet-name>
    <portlet-class>com.code.FileUploadPortlet</portlet.class>
            ........
</portlet>

FileIploadManagedBean.java

@ManagedBean(name = "bean")
   @SessionScoped
   public class FileIploadManagedBean{      
       public void submit(){
          System.out.println("Hello i am in managed bean!!");
       }
   }

当我尝试提交表单时,我可以在FileUploadPortlet.java的processAction方法中获取该文件。但是我的托管bean的提交方法没有被调用。

但是当我从表单中删除enctype="multipart/form-data"时。在此processAction方法中,在FileUploadPortlet的processAction方法和文件不可见之前调用托管bean的Submit方法。

0 个答案:

没有答案