最近在做某个项目时,使用到JSF2与tomcat9.0服务器,可是,JSF的很多标签(JSF组件)无法在浏览器中显示出来。tomcat服务器的后台提示信息太少,这个问题就托了很久,查询了好多资料,直到今天才解决。
2.选择JSF映射.jsf,可是在浏览器中访问该页面时无法显示command这个JSF标签。 如下图所示:
首先需要明确一点:JSF,JavaServer Faces,它是以组件为中心来开发 Java Web 用户界面的方法。因此,在使用JSF进行开发时需要建立一种组件的概念,在这种开发中,所有的JSF组件是由容器来负责管理的,包括组件的创建、管理、维护、使用以及销毁。常用的容器有Tomcat、Wildfly 、Glassfish等。
在以前的学习中我们知道,wildfly1.0是默认支持JSF2.0的。可是在这里的Tomcat9.0中,没有默认支持JSF2.0,所以,我们需要手动添加JSF2.0的Tomcat9.0的支持。
如下图: 正常情况下是没有框中的两个JSF的jar包的。
jsf-api-2.1.jarjsf-impl-2.1.jar可以手动下载适合版本的JSF的jar包,(上面所列)然后手动添加到Tomcat安装目录的lib目录下即可。
然后需要在maven的pom文件中添加相关依赖。
<!-- jsf2 api --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1.13</version> </dependency> <!-- jsf2 impl --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.1.13</version> </dependency>将pom文件中的关于javaee的依赖配置全都替换为javaee-api并将scope设置为provided。
<!-- javaee-api --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency>在pom中添加以下两个依赖:
<!-- jsf2 api --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1.13</version> </dependency> <!-- jsf2 impl --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.1.13</version> </dependency>1.http://stackoverflow.com/questions/15948598/classformaterror-absent-code-attribute-in-method-that-is-not-native-or-abstract 2.http://stackoverflow.com/questions/20504611/target-unreachable-identifier-resolved-to-null-in-jsf-2-2