6

我的 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)

这是如何引起的,我该如何解决?

4

5 回答 5

10

异常清楚地表明您在运行时类路径中的包中没有application_en.properties或至少没有application.properties文件。resources

就是这样。只要确保你有一个。


与具体问题无关,我只想警告这一点<message-bundle>并且<f:loadBundle>是相互排斥的。要了解区别,请前往JSF 中的国际化,何时使用消息包和资源包?

于 2013-12-02T12:44:33.913 回答
3

你需要两件事:

  1. 将您的messages.properties文件放在您的类路径中。最安全的赌注是把它放在下面src/main/java/your/package/name
  2. 在你的配置它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

于 2016-01-11T22:01:26.127 回答
3

如果您使用 Maven,则必须将属性文件放在 src/main/resources 文件夹中,而不是 src/main/java 中的包

于 2016-10-05T17:17:12.393 回答
0

这是您可以执行的操作:

  • 第 I 步:保留 Maven 文件以供安装和使用。

  • 第二步:需要在环境变量中设置Maven的类路径

  • 第三步:到达Maven 目录中的 then 目录后,mvn install命令提示符下使用命令安装 Maven 。/bin

现在清理项目并部署 Maven 项目以运行。

于 2017-05-30T06:28:52.550 回答
-1

使用 Eclipse 和 Windows:您必须复制 2 个文件

  • xxxPROJECTxxx.properties

  • log4j.properties

这里:C:\Eclipse\CONTENER\TOMCAT\apache-tomcat-7\lib

于 2016-11-19T15:49:37.763 回答