簡體   English   中英

FacesException:表達式錯誤:命名對象:位於WEB-INF / libs /中時找不到xxx

[英]FacesException: Expression Error: Named Object: xxx not found when located in WEB-INF/libs/

我有一個JSF 2.2組件,當它位於WAR項目中時可以正常工作。 因此,將類文件放入WEB-INF / classes / com / test文件夾中

但是,當將該類打包到一個JAR文件中(來自另一個Maven項目)並位於WEB-INF / lib / example1.jar文件夾中時,出現以下錯誤。

Caused by: javax.faces.FacesException: Expression Error: Named Object: HtmlHelloWorld not found.
    at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1933)
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1168)

任何人都可以闡明為什么我得到這個問題或如何解決它。

這是我的代碼,並不是我認為它對問題有任何影響。

@FacesComponent(value = "HtmlHelloWorld")
public class HtmlHelloWorld extends UIComponentBase {
    @Override
    public String getFamily() {
        return null;
    }

    @Override
    public void encodeAll(FacesContext context) throws IOException {
    }
}

我還應該添加一個在JAR根目錄中的“ faces-config.xml”。 但這沒什么區別。

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>
    <resource-bundle>
      <base-name>i18n</base-name>
      <var>bundle</var>
    </resource-bundle>
    <locale-config>
      <default-locale>en</default-locale>
      <supported-locale>en</supported-locale>
      <supported-locale>fr</supported-locale>
      <supported-locale>de</supported-locale>
    </locale-config>
  </application>

</faces-config>

我的META-INF文件夾中沒有faces-config.xml

Project
| src
| | main
|   | java
|     | com.test.TestFacesComponent
|   | resources
|     | META-INF
|       | faces-config.xml

參考: Oracle Doc提取...。

JavaServer Faces實現通過查找以下內容來查找一個或多個文件:

Web應用程序的/ WEB-INF / lib /目錄中的任何JAR文件以及父類加載器中的資源/META-INF/faces-config.xml。 如果存在具有該名稱的資源,則將其作為配置資源加載。 對於包含某些組件和渲染器的打包庫,此方法很實用。

上下文初始化參數javax.faces.application.CONFIG_FILES,它為Web應用程序指定到多個配置文件的一個或多個(以逗號分隔)路徑。 此方法最有可能用於企業級應用程序,這些應用程序委派了單獨的組來維護大型應用程序每個部分的文件。

應用程序的/ WEB-INF /目錄中的名為faces-config.xml的資源。 這是大多數簡單應用程序使它們的配置文件可用的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM