为什么.properties文件由DispatcherPortlet和MVCPortlet以不同方式读取?

时间:2014-10-30 14:56:22

标签: encoding liferay portlet

我正在开发一个Liferay Portal,我有两种不同类型的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编码读取资源包,而第二个以UTF-8读取第二个portlet。这导致在其中一个portlet中以奇怪的方式显示äöüß等特殊字符。如果资源包(.properties文件)包含ä,那么它将在第一个portlet中奇怪地显示。如果资源包中包含UTF-8编码的\ u00E4,则在第二个portlet中显示错误。可能是什么原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

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