【问题标题】:Liferay Vaadin bootstrap Content Encoding ErrorLiferay Vaadin 引导内容编码错误
【发布时间】:2017-07-20 17:39:20
【问题描述】:

我正在尝试将我们的 Vaadin portlet 转换为从 portlet 自己的 Web 应用程序而不是从 ROOT (Liferay) 应用程序提供主题、小部件集等,但我遇到了内容编码问题。

我已添加到 portlet.xml

<init-param>
    <name>vaadin.resources.path</name>
    <value>PORTLET_CONTEXT</value>
</init-param>

到 web.xml

<servlet>
    <servlet-name>VaadinServlet</servlet-name>
    <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>VaadinServlet</servlet-name>
    <url-pattern>/VAADIN/*</url-pattern>
</servlet-mapping>

portlet 无法启动,因为它们无法加载 {WEB_APP}/VAADIN/vaadinBootstrap.js?v.7.7.7

如果我尝试在 Firefox 中手动加载 js 文件,我得到的错误是

内容编码错误

无法显示您尝试查看的页面,因为它使用了无效或不受支持的压缩形式。

请联系网站所有者告知他们这个问题。

如果我使用 wget 加载 URL,它可以完美运行并下载 bootstrap.js 文件。

我们有 Liferay 6.2EE 和 Vaadin 7.7.7

【问题讨论】:

    标签: liferay vaadin


    【解决方案1】:

    我已经设法解决了这个问题。 VaadinServlet 似乎会检查 gzip 标头,如果找到则返回文件的 .gz 版本。这随后被 HTTP 服务器再次 gzip 压缩。解决方案是覆盖 Servlet 并禁用 gzip 代码。

    <servlet>
        <servlet-name>VaadinServlet</servlet-name>
        <servlet-class>com.foo.MyVaadinServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>VaadinServlet</servlet-name>
        <url-pattern>/VAADIN/*</url-pattern>
    </servlet-mapping>
    

    然后创建一个像这样的自定义 Servlet,我总是为 allowServePrecompressedResource 返回 false。

    package com.foo;
    
    import javax.servlet.http.HttpServletRequest;
    
    import com.vaadin.server.VaadinServlet;
    
    public class MyVaadinServlet extends VaadinServlet {
    
        @Override
        protected boolean allowServePrecompressedResource(HttpServletRequest request, String url)
        {
            return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 2012-12-20
      • 2011-09-18
      • 2016-12-28
      相关资源
      最近更新 更多