Jsf TagException。。。创建自定义Facelets标记时为null(未找到文件)

Jsf TagException。。。创建自定义Facelets标记时为null(未找到文件),jsf,jakarta-ee,glassfish,facelets,Jsf,Jakarta Ee,Glassfish,Facelets,我正在基于JSF2.2(Mojarra)创建一个应用程序。我正在使用一个JavaEEEAR项目和一个由Eclipse生成的动态Web项目,以及Glassfish服务器 我创建了一个Facelet标记文件,如中所示。当我加载包含标记的页面时,会出现以下错误(以及HTTP 500错误): WEB-INF/famake.taglib.xml <context-param> <param-name>javax.faces.FACELETS_LIBRARIES</

我正在基于JSF2.2(Mojarra)创建一个应用程序。我正在使用一个JavaEEEAR项目和一个由Eclipse生成的动态Web项目,以及Glassfish服务器

我创建了一个Facelet标记文件,如中所示。当我加载包含标记的页面时,会出现以下错误(以及HTTP 500错误):

WEB-INF/famake.taglib.xml

  <context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/famake.taglib.xml</param-value>
  </context-param>
<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd">
    <namespace>http://famake.com/jsf/facelets</namespace>
    <tag>
        <tag-name>login-form</tag-name>
        <source>tags/login-form.xhtml</source>
    </tag>
</facelet-taglib>
index.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

    Test tag

</ui:composition>
...
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:fmk="http://famake.com/jsf/facelets">
    <h:body>
        <h1>Custome Tags in JSF 2.0</h1>
        <fmk:login-form/>
    </h:body>
</html>
。。。
jsf2.0中的Custome标记

我不明白为什么Glassfish找不到我的
登录表单.xhtml
。我尝试过不同的途径,甚至尝试过流浪玻璃鱼,但没有任何合理的结果。。。有什么问题吗?

问题出在服务器配置上。我找不到原因,但它在另一个Glassfish实例上工作,所以我只是删除了域并重新创建了它。很抱歉,我找不到更具体的内容。

我遇到了同样的问题,我的项目(Glassfish 4+Spring+EJB3+JSF 2.2+自定义标记)在本地Glassfish和临时服务器上运行良好,但在生产过程中它抛出了一个异常
TagException:/WEB-INF/templates/common.xhtml@38,33 null

经过多次调试,我们发现了问题。如果您的Glassfish配置了多个虚拟服务器,并且您的项目已部署并与2个或多个虚拟服务器关联,那么JSF库将通过您正在访问的当前主机名读取源文件,但是对于自定义facelets标记,它将通过不同的虚拟服务器读取(可能是一个bug)并抛出一个
FileNotFoundException
(被
TagException
抑制)


如果仅将部署的项目配置到一个虚拟服务器,则不会发生此问题。这就是为什么当您重新创建一个新的域时,它会起作用,因为没有额外的虚拟服务器。

不需要在多个问题上重复相同的答案。把这个问题报告为dupe(我已经做了)。这个网站是一个问答网站,不是一个老式的讨论论坛。@BalusC OK。谢谢你的建议。
...
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:fmk="http://famake.com/jsf/facelets">
    <h:body>
        <h1>Custome Tags in JSF 2.0</h1>
        <fmk:login-form/>
    </h:body>
</html>