私のfaces-config.xmlは以下が好きです。
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://Java.Sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-
facesconfig_2_0.xsd"
version="2.0">
<application>
<message-bundle>resources.application</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
</faces-config>
Xhtmlファイル
<f:loadBundle basename="resources.application" var="msg"/>
以下の例外が発生します
javax.faces.view.facelets.TagAttributeException: //D:/12c_Workspace/VNPO/WebContent/login.xhtml @9,59 <f:loadBundle basename="resources.application"> Can't find bundle for base name resources.application, locale en
at com.Sun.faces.facelets.tag.jsf.core.LoadBundleHandler.apply(LoadBundleHandler.Java:233)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.Java:98)
at com.Sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.Java:93)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.Java:98)
at com.Sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.Java:86)
at com.Sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.Java:152)
at com.Sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.Java:774)
at com.Sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.Java:100)
at com.Sun.faces.lifecycle.Phase.doPhase(Phase.Java:101)
at com.Sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.Java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.Java:594)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.Java:242)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.Java:216)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.Java:132)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.Java:338)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.Java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.Java:74)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.Java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.Java:74)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.Java:3288)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.Java:3254)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.Java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.Java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.Java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.Java:2163)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.Java:2089)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.Java:2074)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.Java:1513)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.Java:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.Java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.Java:221)
Caused by: Java.util.MissingResourceException: Can't find bundle for base name resources.application, locale en
at Java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.Java:1427)
at Java.util.ResourceBundle.getBundleImpl(ResourceBundle.Java:1250)
at Java.util.ResourceBundle.getBundle(ResourceBundle.Java:952)
at com.Sun.faces.facelets.tag.jsf.core.LoadBundleHandler.apply(LoadBundleHandler.Java:227)
これはどのように発生し、どうすれば解決できますか?
例外は、ランタイムクラスパスのresources
パッケージにapplication_en.properties
または少なくともapplication.properties
ファイルがないことを明確に示しています。
本当にそれだけです。持っていることを確認してください。
具体的な問題とは無関係ですが、<message-bundle>
と<f:loadBundle>
は相互に排他的であることを警告したいと思います。違いについては、 JSFでの国際化、いつmessage-bundleとresource-bundleを使用するか? に進んでください。
あなたは2つのものが必要です:
messages.properties
ファイルをクラスパスに含める。最も安全な方法は、それをsrc/main/Java/your/package/name
の下に置くことです。faces-config.xml
で構成します。http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd "version =" 2.2 ">
<application>
<resource-bundle>
<base-name>your.package.name.messages</base-name>
<var>i18n</var>
</resource-bundle>
</application>
</faces-config>
.properties
にfaces-config.xml
サフィックスを含めないことに注意してください
Mavenを使用している場合は、src/main/Javaにあるパッケージではなくsrc/main/resourcesフォルダーにプロパティファイルを配置する必要があります。
これがあなたができることです:
ステップI:インストールして使用するMavenファイルを保持します。
ステップII:環境変数でMavenのクラスパスを設定する必要があります
ステップIII: Mavenディレクトリのmvn install
ディレクトリに到達した後、コマンド/bin
を使用してMavenをインストールしますコマンドプロンプト。
プロジェクトをクリーンアップし、Mavenプロジェクトをデプロイして実行します。