Jsf rich:GateinPortlet中的文件上载

Jsf rich:GateinPortlet中的文件上载,jsf,file-upload,richfaces,gatein,Jsf,File Upload,Richfaces,Gatein,环境:RichFaces 3.3.3最终版本;小脸1.1.15;JBoss portletbridge 2.1.0最终版;GateIn Portal 3.1.0与JBoss as 5.1和内置的Mojarra JSF 1.2捆绑在一起 一些代码片段: filepage.xhtml: <a4j:form id="fileForm"> <rich:fileUpload fileUploadListener="#{testBean.fileListener}"

环境:RichFaces 3.3.3最终版本;小脸1.1.15;JBoss portletbridge 2.1.0最终版;GateIn Portal 3.1.0与JBoss as 5.1和内置的Mojarra JSF 1.2捆绑在一起

一些代码片段: filepage.xhtml:

 <a4j:form id="fileForm">
      <rich:fileUpload fileUploadListener="#{testBean.fileListener}"
        acceptedTypes="txt" maxFilesQuantity="1" />
      <!-- etc. -->
 </a4j:form>
结果当按预期部署为独立web应用时,组件显示,用户单击添加,浏览然后选择一个文件,文件添加到列表中,用户单击上载按钮,控制台上显示“进入fileListener方法”一行(以及发生的其他事情)

GateIn上的结果:除sysout和侦听器中的其他代码外,上述所有代码。似乎未调用此方法

我已经花了几天时间阅读JBoss社区论坛和一些JIRAs,看来我的问题并不新鲜。我尝试了我发现的每一个建议,但没有一个对我有效。而且,这些帖子都没有比2010年1月更新过,从那时起,我的应用程序的所有组成部分都有了新版本


<>你的帮助,或指向最新和详细信息的指针,非常感谢。

< P>我不认为这是对我自己问题的回答,但是这对于评论来说太大了,我不想通过添加这个作为编辑来影响答案。不管怎么说,根据一位同事的建议,我有一些工作要做

正如我在问题中提到的,文件上传在一个独立的web应用程序中工作得非常好,所以为什么不让portlet仅仅指向那个web应用程序,而不是那个web应用程序呢

在portlet.xml中,将
从javax.portlet.faces.GenericFacesPortlet更改为您创建的java portlet,例如mypackage.DispatchPortlet。同时删除带有defaultViewId的

DispatchPortlet与其他所有内容都在同一个项目中,与HelloWorldPortlet条目相比,它只需再复杂一步。只需覆盖doView并添加以下四行:

 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println(HTML_CONTENT);
 out.close();
HTML_内容是一个静态字符串变量,看起来有点像:

 <iframe src="url to your app" height="400" width="600">no iframes</iframe>
无iframe
这几乎就是全部。有人几乎想知道我们为什么要费心使用portlet桥。不仅一切正常,而且它看起来也更好一些,因为GateIn对CSS所做的一些时髦的事情没有发生


<>但是,我认为这是一个贫民窟解决方案,我真的在寻找一个正确的方法来实现这100%个portlet,运行文件上传。

我不认为这是我自己的问题的答案,但是这对于注释来说太大了,我不想通过添加这个作为编辑来影响答案。不管怎么说,根据一位同事的建议,我有一些工作要做

正如我在问题中提到的,文件上传在一个独立的web应用程序中工作得非常好,所以为什么不让portlet仅仅指向那个web应用程序,而不是那个web应用程序呢

在portlet.xml中,将
从javax.portlet.faces.GenericFacesPortlet更改为您创建的java portlet,例如mypackage.DispatchPortlet。同时删除带有defaultViewId的

DispatchPortlet与其他所有内容都在同一个项目中,与HelloWorldPortlet条目相比,它只需再复杂一步。只需覆盖doView并添加以下四行:

 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println(HTML_CONTENT);
 out.close();
HTML_内容是一个静态字符串变量,看起来有点像:

 <iframe src="url to your app" height="400" width="600">no iframes</iframe>
无iframe
这几乎就是全部。有人几乎想知道我们为什么要费心使用portlet桥。不仅一切正常,而且它看起来也更好一些,因为GateIn对CSS所做的一些时髦的事情没有发生


<>但是,我认为这是一个贫民窟解决方案,我正在寻找正确的方法来实现这100%个portlet,运行文件上传。

< P>我在红帽EPP的文档中不支持文件上传。也许当下一个版本准备好(支持JSF 2、Richfaces 4和Bridge 3)时,它就会准备好,但目前,解决方案是唯一的选择。

我在Red Hat EPP的文档中找到,不支持文件上载。也许当下一个版本准备好(支持JSF2、RichFaces4和Bridge3)时,它就会准备好,但目前,解决方案是唯一的选择