Jsf enctype为“”的表单;“多部分/表单数据”;未通过命令按钮获取提交
我正在WebSpherePortal8.0.0.3上使用java6、JSF2.0构建一个测试应用程序,以实现文件上传功能 FileUploadView.xhtmlJsf 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}" />
<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!!");
}
}