【问题标题】:Why is .properties file read differently by DispatcherPortlet and MVCPortlet?为什么 DispatcherPortlet 和 MVCPortlet 读取 .properties 文件的方式不同?
【发布时间】:2014-12-26 16:33:19
【问题描述】:

我正在开发一个 Liferay 门户,其中有 2 种不同类型的 portlet:

<portlet>
    <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
    <supports>
        <mime-type>text/html</mime-type>
        <portlet-mode>view</portlet-mode>
    </supports>
    <supported-locale>de</supported-locale>
    <supported-locale>en</supported-locale>
    <resource-bundle>path.to.Resource</resource-bundle>
    ...
</portlet>

<portlet>
    <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
    <supports>
        <mime-type>text/html</mime-type>
        <portlet-mode>HELP</portlet-mode>
    </supports>
    <supported-locale>de</supported-locale>
    <supported-locale>en</supported-locale>
    <resource-bundle>path.to.Resource</resource-bundle>
    ...
</portlet>

问题在于第一个 portlet 以 ISO-8859-1 编码读取资源包,而第二个 portlet 以 UTF-8 读取。这导致在其中一个 portlet 中以一种奇怪的方式显示特殊字符,如 äöüß。如果资源包(.properties 文件)包含 ä,那么它会在第一个 portlet 中奇怪地显示。如果资源包包含 UTF-8 编码的 \u00E4,则在第二个 portlet 中显示错误。可能是什么原因以及如何解决?

【问题讨论】:

    标签: encoding liferay portlet


    【解决方案1】:

    由于 Liferay 假定资源为 UTF-8,解决此问题的唯一方法是为两个 portlet 设置两个不同的资源文件。这很不幸,但我能想到的唯一解决方案。

    【讨论】: