Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC-获取错误的消息包_Java_Spring_Jsp_Liferay_Portlet - Fatal编程技术网

Java Spring MVC-获取错误的消息包

Java Spring MVC-获取错误的消息包,java,spring,jsp,liferay,portlet,Java,Spring,Jsp,Liferay,Portlet,我在使用Spring MVC时遇到了一个奇怪的问题:获取了错误的消息包文件。我已经仔细检查过了,在我的Java控制器类中,我有fr\u fr区域设置,但是Spring标记(appContext.getMessage(code,null,locale);在类中也会返回英语消息 发生了什么事 我正在为Liferay Portal开发portlet。让我向您展示我的部分代码: 在applicationContext.xml中: 信息 在我的JSP中,我有如下代码: 。。。 ... 我的邮件路径如

我在使用Spring MVC时遇到了一个奇怪的问题:获取了错误的消息包文件。我已经仔细检查过了,在我的Java控制器类中,我有fr\u fr区域设置,但是Spring标记(
appContext.getMessage(code,null,locale);
在类中也会返回英语消息

发生了什么事

我正在为Liferay Portal开发portlet。让我向您展示我的部分代码:

在applicationContext.xml中:


信息
在我的JSP中,我有如下代码:

。。。
...
我的邮件路径如下所示:

发展:

  • /src/main/webapp/WEB-INF/classes/messages.properties(英语,默认)
  • /src/main/webapp/WEB-INF/classes/messages\u fr.properties
部署在Tomcat中

  • /webapps/MY_APP/WEB-INF/classes/messages.properties
  • /webapps/MY\u APP/WEB-INF/classes/messages\u fr.properties
尝试在浏览器中设置语言(设置为fr\u fr)。在我使用的firefox版本中,它位于

Edit->Preferences->Content->Langauges

并使用上移或下移按钮将fr_fr作为首选项


这会使浏览器发送带有首选语言环境集的请求。

您必须在applicationContext中安装拦截器,如


你也需要


在我项目的第一个JSP页面上,我选择了如下语言:

|
请告诉我这是否对你有帮助

另外,我的messages.*.properties文件位于源文件夹src/main/resources中,不在webapp中,我不知道这是否重要

p.p.S.此处提供有用的教程:

我还想补充一点,在xml的开头应该有如下内容:



这是必要的,以便识别前缀,如mvc。确保您拥有它。

当我的本地化邮件文件的unicode字符不正确时,我也遇到了类似的问题 \uXXX表格)

Java、Spring和Tomcat都没有写关于它的信息,根本没有反馈

修复文件后,所有的突然开始工作


首先,您必须确保liferay支持所需的区域设置。此外,您必须在portlet.xml中为每个portlet添加受支持的区域设置

portlet.xml


...
EN
fr
...

如果你错过了两者中的一个,那就行不通了。检查您是否也为此portlet添加了受支持的区域设置。

但我已将其设置为法语。每一个可能的调试输出都会打印出我选择了一个fr\u fr语言环境(通过http请求)!如果删除messages.properties文件,会出现找不到消息的错误。我想您的属性文件名应该是messages\u fr\u fr.properties,而不是messages\u fr.properties。另外,您可以尝试配置区域设置解析程序吗?就像这里的最后一个答案一样。最奇怪的是,只有这个特定的portlet本地化不起作用。。其他每个portlet都可以正常工作…问题可能有三个原因:没有加载法语属性文件,或者由于某种原因标记使用英语本地,或者法语消息文件不包含密钥。最奇怪的是,只有这个特定的portlet本地化不起作用。。其他每个portlet都可以正常工作。两者都有相同的密钥-没有丢失。我不太了解Portlet,但是您是否配置了本地拦截器。Spring reference第15.6章property name=“basename”或basenames?它是basename,而不是basenames。