【问题标题】:javax.servlet.ServletException: Can't find bundle for base name messages, locale esjavax.servlet.ServletException:找不到基本名称消息的捆绑包,区域设置
【发布时间】:2013-04-30 22:32:35
【问题描述】:

有时我会收到错误:

"javax.servlet.ServletException: Can not find bundle for messages based name, locale is"

我有一个带有 primefaces 的 JSF 应用程序,其中捆绑消息,除了 xhtml 中的一种情况外,几乎总是正常工作,单击一个将数据保存在 a 中的按钮,有时有效,有时无效,具体取决于要包含的图像或不是对象 p:编辑器。当它失败并出现以下错误时,好像找不到消息:

Estado HTTP 500 - Can't find bundle for base name messages, locale es

type Informe de Excepción

mensaje Can't find bundle for base name messages, locale es

descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.

excepción

javax.servlet.ServletException: Can't find bundle for base name messages, locale es
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
    uned.lsi.security.SecurityFilter.doFilter(SecurityFilter.java:62)

causa raíz

java.util.MissingResourceException: Can't find bundle for base name messages, locale es
    java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
    java.util.ResourceBundle.getBundleImpl(Unknown Source)
    java.util.ResourceBundle.getBundle(Unknown Source)
    javax.faces.validator.MessageFactory.getMessage(MessageFactory.java:155)
    javax.faces.validator.MessageFactory.getMessage(MessageFactory.java:245)
    javax.faces.validator.LengthValidator.validate(LengthValidator.java:228)
    javax.faces.component.UIInput.validateValue(UIInput.java:1142)
    javax.faces.component.UIInput.validate(UIInput.java:960)
    javax.faces.component.UIInput.executeValidate(UIInput.java:1204)
    javax.faces.component.UIInput.processValidators(UIInput.java:693)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
    javax.faces.component.UIForm.processValidators(UIForm.java:240)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
    org.primefaces.component.panel.Panel.processValidators(Panel.java:293)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
    javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159)
    com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
    uned.lsi.security.SecurityFilter.doFilter(SecurityFilter.java:62)

虽然它可能是bounle帖子的配置,因为它几乎总是像我一样离开这里:

faces-config

 <application>
    <message-bundle> messages </ message-bundle>
     <locale-config>
        <default-locale> is </ default-locale>
     </ Locale-config>

    <resource-bundle>
      <base-name> MessageResources </ base-name>
      <var> msg </ var>
    </ Resource-bundle>
 </Application>

xhtml 错误:

<f:loadBundle basename="MessageResources" var="msg"/>

MessageResources.properties 文件,src 目录。

提前谢谢,以防有人发生过类似的事情。

【问题讨论】:

  • 在你输入'is'的默认语言环境中,这是一个错字吗?你只支持西班牙语吗?您还应该为 MessageResources 类指定完整路径(带有包名),例如:com.myapp.language.MessageResources 另外:语言文件是否具有 .properties 扩展名?

标签: jsf primefaces


【解决方案1】:

您得到的错误是指faces-config.xml 中的&lt;message-bundle&gt;,而不是您所期望的&lt;resource-bundle&gt;&lt;f:loadBundle&gt;

首先,请仔细阅读下面的答案来了解区别:Internationalization in JSF, when to use message-bundle and resource-bundle?

因此,消息包用于 JSF 自己的标准转换器/验证器,例如 &lt;f:convertDateTime&gt;required="true"&lt;f:validateLength&gt; 等,资源包用于您自己的 i18n 文本内容,例如标题、段落、标签、工具提示等。请注意在UIInput#validate() 调用ProcessValidationsPhase 期间LengthValidator 参与堆栈跟踪。这应该已经对真正的问题给出了一些提示。

相应地修复/对齐它。也许您只需要完全摆脱 &lt;message-bundle&gt; 并依赖 JSF 默认转换/验证消息。

【讨论】:

  • 对不起,我也有同样的问题。我替换了&lt;message-bundle&gt;,设置&lt;default-locate&gt;pt_BR&lt;/default-locale&gt; 并只创建了com.sample.i18n.Message.properties 文件,但我收到错误:找不到基本名称消息的捆绑包,语言环境pt_BR。没有locale的时候,他应该不会得到默认的Message.properties
  • 将 com.sample.i18n.Message.properties 更改为 com.sample.i18n.Message
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 2011-01-06
  • 2016-06-13
  • 2016-05-02
  • 2014-03-21
  • 2018-01-04
  • 1970-01-01
相关资源
最近更新 更多