Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf enctype为“”的表单;“多部分/表单数据”;未通过命令按钮获取提交_Jsf_Jsf 2_Portlet_Websphere Portal - Fatal编程技术网

Jsf enctype为“”的表单;“多部分/表单数据”;未通过命令按钮获取提交

Jsf enctype为“”的表单;“多部分/表单数据”;未通过命令按钮获取提交,jsf,jsf-2,portlet,websphere-portal,Jsf,Jsf 2,Portlet,Websphere Portal,我正在WebSpherePortal8.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}" />

我正在WebSpherePortal8.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>
portlet.xml

<portlet>
    <portlet-name>FileUploadView</portlet-name>
    <portlet-class>com.code.FileUploadPortlet</portlet.class>
            ........
</portlet>
当我试图提交表单时,我可以在FileUploadPortlet.java的processAction方法中获取该文件。但是我的托管bean提交方法没有被调用


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

我认为您缺少用于包装请求的HttpServletRequestWrapperFileUploadPortlet@Vikas,你能详细说明一下吗?我已经找到了一个解决办法来实现我的目标,但我最初的问题仍然没有得到回答@巴卢斯克,你能帮帮我吗?现在我在我的视图中添加了两个按钮,即按钮1和按钮2,它们都在不同的生命周期中工作。单击按钮1时,我将发送一个带有enctype=“multipart/form data”的请求,该请求将命中FileUploadPortlet.java的processAction方法。在这里,我可以获取file对象并将其设置为managedbean对象。单击按钮2,我将发送一个带有默认enctype的请求,该请求将命中FileIploadManagedBean.java的提交方法,在这里我可以获取该文件。但使用这种方法,primefaces requestcontext.getcurrentinstance().execute无法工作。
<portlet>
    <portlet-name>FileUploadView</portlet-name>
    <portlet-class>com.code.FileUploadPortlet</portlet.class>
            ........
</portlet>
@ManagedBean(name = "bean")
   @SessionScoped
   public class FileIploadManagedBean{      
       public void submit(){
          System.out.println("Hello i am in managed bean!!");
       }
   }