首页 > 解决方案 > JSF 错误:找不到基本名称 xxxx、语言环境 xxxx 的捆绑包

问题描述

我正在尝试使我的应用程序国际化,并为此搜索了很多教程。我总是卡在这一点上,因为无论我做什么配置,它们都不起作用。

早些时候我发了一篇关于解析异常的文章。解决此解析器异常后,现在应用程序找不到捆绑包。

我通过 faces-config.xml 以及支持的语言环境安排和注册了 Core 包。

即使我已经搜索了现有的解决方案,但它们似乎都不适用于我的案例。

那么,问题在哪里?它必须在根文件夹吗?是不是配置错误?我的 faces-config 中的一个错字(不要这么认为,我重做了很多次)。

配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
    <application>
<!--        <message-bundle>messages_en_US</message-bundle> -->
<!--        <message-bundle>messages_es</message-bundle> -->
<!--        <message-bundle>messages_pt_BR</message-bundle> -->
        <locale-config>
            <default-locale>en_US</default-locale>
            <supported-locale>pt_BR</supported-locale>
            <supported-locale>es</supported-locale>
        </locale-config>

        <resource-bundle>
            <base-name>com.tfduque.fieldassist.interface</base-name>
            <var>msg</var>

        </resource-bundle>
    </application>

</faces-config>

文件夹/包组织:

文件夹组织

堆栈跟踪(完整:https ://pastebin.com/69iJrvuX ):

类型异常报告

消息 Can't find bundle for base name com.tfduque.fieldassist.interface_es, locale pt_BR

说明 服务器遇到了阻止它完成请求的意外情况。

Exception

javax.servlet.ServletException: Can't find bundle for base name com.tfduque.fieldassist.interface_es, locale pt_BR

    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

标签: jsfinternationalization

解决方案


通过删除文件的完整路径来解决它 - 只是文件的名称似乎就足够了:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
    <application>
<!--        <message-bundle>messages_en_US</message-bundle> -->
<!--        <message-bundle>messages_es</message-bundle> -->
<!--        <message-bundle>messages_pt_BR</message-bundle> -->
        <locale-config>
            <default-locale>en_US</default-locale>
            <supported-locale>pt_BR</supported-locale>
            <supported-locale>es</supported-locale>
        </locale-config>
<!--- Change the path ("com.tfduque.fieldassist.interface") to the filename ("interface") here -->    
        <resource-bundle>
            <base-name>interface</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>

</faces-config>

推荐阅读