【问题标题】:tomahawk t:inputFileUpload not workingtomahawk t:inputFileUpload 不工作
【发布时间】:2012-07-07 14:53:10
【问题描述】:

我开发了一个具有以下方面的 jsf 应用程序

  • 动态 Web 模块 2.5
  • Java 5
  • JavaServer Faces 1.2
  • Rich Faces 3.3.2

我有一个带有 t:inputFileUpload 组件的页面。在我将 ajax 和丰富的面孔组件和标签库添加到我的页面之前,它工作正常。如下:-

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
...
<t:inputFileUpload...

我想问的是,这些标签库不可能一起工作吗?

提前致谢。

【问题讨论】:

    标签: ajax jsf richfaces tomahawk


    【解决方案1】:

    只要您不通过 ajax 提交表单,它应该可以正常工作。即不能使用&lt;t:inputFileUpload&gt; 通过ajax 上传文件。因此,您需要确保通过同步(非 ajax)请求提交表单。

    您还应该确保 Tomahawk 的 ExtensionsFilter 已在 web.xml 中注册 之前 RichFaces 的 org.ajax4jsf.Filter,否则它将在 Tomahawk 的 ExtensionsFilter 获取之前消耗 multipart/form-data 请求有机会这样做。

    或者,您可以放弃 Tomahawk 的 &lt;t:inputFileUpload&gt; 并改用 RichFaces 自己的 &lt;rich:fileUpload&gt;。它能够使用 Flash 模拟“类似于 ajax 的”文件上传。

    【讨论】:

    • 是的,先生,我在 selectOneMenu 中使用 a4j:support 并在更改时提交......无论如何。现在我要根据你的指导做一些事情。
    • @BalusC 出于好奇,为什么在使用 ajax 时它不起作用?
    • @jwa:因为XMLHttpRequest 级别 1(由 ajax4jsf 使用)不支持 multipart/form-data 编码,这是为了能够通过 HTTP 请求发送文件所必需的。跨度>
    【解决方案2】:

    请确保您的表单中有“encrypeType”。

    <h:form enctype="multipart/form-data">
    

    【讨论】:

    • 请仔细阅读问题。它说 “在我将 ajax 和丰富的面孔组件和标签库添加到我的页面之前它工作正常”。如果 OP 没有使用正确的 enctype,它以前不可能正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2012-07-06
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多