我正在使用Netbeans 8.02,它似乎理解了它帮助我创建的复合组件。它位于文件夹/ resources / ezcomp(默认的Nebeans用于此目的)中,如下所示:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:cc="http://xmlns.jcp.org/jsf/composite"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="pobject"
type="test.database.UserItem"
required="true" />
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
...
当我编辑页面以使用该组件时,NetBeans在其代码完成数据库中有它,并在页面上创建一个xmlns引用,如下所示。
xmlns:ezcomp="http://xmlns.jcp.org/jsf/composite/ezcomp"
问题是,当Mojarra 2.1.6(Glassfish 3)遇到这个问题时,它会发出一条消息:
Warning: This page calls for XML namespace
http://xmlns.jcp.org/jsf/composite/ezcomp declared with
prefix ezcomp but no taglibrary exists for that namespace.
上次我这样做的时候,网址是java.sun.com,所以我想在我不在的时候这个行业继续前进。如果我更改URL以使用java.sun.com,它将变为Null指针异常。
任何人都有关于如何解决这个问题的想法?
答案 0 :(得分:1)
http://xmlns.jcp.org/jsf/*
命名空间是自JSF 2.2以来的新命名空间。这些警告表明您实际上正在使用JSF 2.0 / 2.1,或者已将您的项目配置为使用JSF 2.0 / 2.1。
如果您不使用/定位JSF 2.2,那么您根本不应该使用JSF 2.2引入的命名空间。在JSF 2.0 / 2.1中,XML名称空间为http://java.sun.com/jsf/*
,如下所示。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
>
如果您确信自己实际使用的是JSF 2.2,则需要在项目属性中的某处配置目标JSF版本。在Eclipse中,您可以在 Project Facets 中找到它。下图显示了2.0版。你应该把它改为2.2。
如果您不能选择JSF 2.2,那么IDE本身很可能需要更新。在Eclipse的情况下,在WTP 3.5中添加了JSF 2.2支持,这在Eclipse 4.4 Luna中首次引入。