Liferay:定制portlet部署期间添加的web.xml HeaderFilter

我需要定制我的liferay portlet的部署,以便GWT nocache.js文件不会收到'Expires'HTTP标头集。

我的战争文件如下所示:

view.jsp
com.foobar.MyEntryPoint/com.foobar.MyEntryPoint.nocache.js
com.foobar.MyEntryPoint/12312312313213123123123.cache.html
WEB-INF/web.xml
WEB-INF/portlet.xml
WEB-INF/liferay-portlet.xml
... etc

我的web.xml非常空(只有displayName)

在部署过程中,我重写了我的liferay,特别是有一系列的过滤器:

<filter>
    <filter-name>Header Filter</filter-name>
    <filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
    <init-param>
        <param-name>filter-class</param-name>
        <param-value>com.liferay.portal.servlet.filters.header.HeaderFilter</param-value>
    </init-param>
    <init-param>
        <param-name>Cache-Control</param-name>
        <param-value>max-age=315360000, public</param-value>
    </init-param>
    <init-param>
        <param-name>Expires</param-name>
        <param-value>315360000</param-value>
    </init-param>
</filter>
<filter-mapping>
<filter-name>Header Filter</filter-name>
    <url-pattern>*.js</url-pattern>
</filter-mapping>

这个过滤器为2020年添加一个Expires头文件到.nocache.js js文件中......麻烦的是这些文件实际上不应该被缓存(提示的名字是:)

为了开发的目的,我已经通过使用以下方法禁用过滤器来解决这个问题

com.liferay.portal.servlet.filters.header.HeaderFilter=false

在全局portal-ext.properties中。 我想要的是以下之一:

  • 仅为此Portlet或War文件禁用HeaderFilter。 我总是可以添加我自己的过期
  • 向HeaderFilter添加init-param以匹配除.noc​​ache.js文件以外的任何内容
  • 任何想法如何能够实现这些事情?

    堆栈:liferay-6.0.1 CE,Windows 7,java 1.6.0_18,GWT 2.0.3


    尝试使用Liferay使用的url-regex-pattern:

    <filter>
        <filter-name>Header Filter</filter-name>
        <filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class>
        <init-param>
            <param-name>filter-class</param-name>
            <param-value>com.liferay.portal.servlet.filters.header.HeaderFilter</param-value>
        </init-param>
        <init-param>
            <param-name>url-regex-pattern</param-name>
            <!-- the following matches everything except files ending .nocache.js  -->
            <param-value><![CDATA[^.+(?<!nocache.js)$]]></param-value>
        </init-param>
        <init-param>
            <param-name>Cache-Control</param-name>
            <param-value>max-age=315360000, public</param-value>
        </init-param>
        <init-param>
            <param-name>Expires</param-name>
            <param-value>315360000</param-value>
        </init-param>
    </filter>
    

    如果将其添加到web.xml中,则在部署期间不会添加或删除两次。 我现在还没有6.0版的经验,所以请确认。

    链接地址: http://www.djcxy.com/p/60151.html

    上一篇: Liferay: Customise the web.xml HeaderFilter added during portlet deployment

    下一篇: Accessing the user from a liferay portlet?