在应用程序中使用hx:fileupload和tomahawk tree2组件之间的冲突

时间:2013-12-03 05:42:44

标签: jsf web.xml myfaces websphere-8 tomahawk

我正在使用 hx:fileupload 组件,该组件允许用户打开本地文件系统并浏览到该文件。在同一个应用程序中,我使用 tomahawk tree2 组件来显示分层目录结构。

在添加tree2组件之前,fileupload工作正常但是当我在 web.xml 文件中添加了与tomahawk tree2相对应的过滤器标记时, getFileupload1()。getFilename() hx的文件 :fileupload组件(其中getFileupload1()是hx:fileupload组件的getter方法)返回null异常。

过滤代码:

<filter>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <url-pattern>*.jsf</url-pattern>
</filter-mapping>

如果我从web.xml文件中删除过滤器标记 fileupload 组件将恢复正常工作,但 Tree2 组件将无效。< / p>

请帮助使两个组件在应用程序中协同工作。

谢谢

我做了以下更新:

  1. 通过从原始ExtensionsFilter源代码文件中删除 if(ServletFileUpload.isMultipartContent(httpRequest)){} block 来实现ExtensionsFilter过滤器servlet。
  2. 更新了web.xml代码

    <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <filter-class>pagecode.ExtensionsFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
    

    请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

ExtensionsFilter也会自动解析multipart/form-data次请求,作为其战斗工作<t:inputFileUpload>的一部分。配置无法禁用此功能。

你基本上有两个选择:

  1. 在同一许可下复制ExtensionsFilter if (ServletFileUpload.isMultipartContent(httpRequest)) {}并删除整个multipart/form-data块(第347-350行),以便它不会解析<hx:fileUpload>请求再次使用此过滤器。

  2. <t:inputFileUpload>替换为{{1}}。

相关问题