最近我一直在玩JSF2.0 + Richface 3.3.3,我使用STS作为我的IDE和Maven来构建我的项目,但不知何故我无法使用以下JSF2.0标签来工作:
它在运行时失败,说它无法找到X组件。
我有jsf-api-2.0.2,jsf-impl-2.0.2,richfaces-api-3.3.3.final,richfaces-impl-jsf2-3.3.3.final,richfaces-ui-3.3。 3.final,jsf-facelets-1.1.15,jstl-1.0,显然是“xmlns:f =”http://java.sun.com/jsf/core“xmlns:h =”http://java.sun。 com / jsf / html“在每个.xhtml文件中,我错过了什么?
这是我得到的确切错误:
<h:button> Tag Library supports namespace: http://java.sun.com/jsf/html, but no tag was defined for name: button
@EDIT:好的,没关系,我的队友发现它是因为我们正在使用一些外部facelets而我们必须等待RichFaces4.0 ...
答案 0 :(得分:2)
你删除了旧的jsf 1.2库吗?
检查您的WEB-INF/lib
,看看没有JSF 1.2库的痕迹。
另请注意,您应将faces-config
文件更新为2.0
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
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">
在启动servlet时是否说了些什么:INFO: Initializing Mojarra 2.0.2 (FCS b10) for context '/nameofyourapplication'
(如果你使用的是JSF的Sun实现)
答案 1 :(得分:0)
您是否确认您的maven pom.xml文件具有以下依赖关系:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.2</version>
</dependency>
在项目目录中完成mvn clean install
后,在target
目录中搜索jsf jar文件,并确保在那里找到2.0个罐子。
如果问题仍未解决,请指明您正在使用的Web容器以及如何将战争部署到服务器中。