0

時々私はエラーが発生します:

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

私は、メッセージをバンドルするprimefacesを備えたJSFアプリケーションを持っています。ほとんどの場合、 a の1つのケースを除いて正しく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)

ぼんやり投稿の構成かもしれませんが、ほとんどの場合動作するため、私が持っているようにここに残します。

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 ディレクトリ。

誰かが似たようなことが起こった場合に備えて、事前に感謝します。

4

1 に答える 1

1

あなたが得たエラーは、あなたが期待していたものではなく、 <message-bundle>inを参照しています。faces-config.xml<resource-bundle><f:loadBundle>

まず、次の回答をよく読んで違いを理解してください: Internationalization in JSF, when to use message-bundle and resource-bundle?

したがって、メッセージ バンドルは<f:convertDateTime>required="true"<f:validateLength>、 などの JSF 独自の標準コンバータ/バリデータ用であり、リソース バンドルは、ヘッダー、段落、ラベル、ツールチップなどの独自の i18n テキスト用です。LengthValidatorスタックへの の関与に注意してください。UIInput#validate()の呼び出し中にトレースしますProcessValidationsPhase。これにより、実際の問題についてのヒントがすでに得られているはずです。

それに応じて修正/調整します。おそらく、完全に取り除き、<message-bundle>JSF のデフォルトの変換/検証メッセージに頼る必要があるだけでしょう。

于 2013-05-02T01:14:55.863 に答える