如何在没有web.xml的JavaEE7环境中运行JSF2.2页面?
我的非常简单的web应用程序有什么问题:web应用程序已成功部署到应用程序服务器,但hello bean未注入index.xhtml页面 (页面仅显示Facelets的Hello:#{Hello.value}) (这是我第一次使用JSF,所以这个问题可能很简单,而且我使用了一篇好文章) 我有战争档案的下一个结构:如何在没有web.xml的JavaEE7环境中运行JSF2.2页面?,jsf,web.xml,jsf-2.2,java-ee-7,Jsf,Web.xml,Jsf 2.2,Java Ee 7,我的非常简单的web应用程序有什么问题:web应用程序已成功部署到应用程序服务器,但hello bean未注入index.xhtml页面 (页面仅显示Facelets的Hello:#{Hello.value}) (这是我第一次使用JSF,所以这个问题可能很简单,而且我使用了一篇好文章) 我有战争档案的下一个结构: mywebapp | - WEB_INF | - classes | - Hello.class - index.html Hello.java有
mywebapp
|
- WEB_INF
|
- classes
|
- Hello.class
- index.html
Hello.java有:
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class Hello {
private String value;
public String getValue() {
return "Hello JSF";
}
public void setValue(String value) {
this.value = value;
}
}
还有我的index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>My Facelet Page Title</title>
</h:head>
<h:body>
Hello from Facelets: #{hello.value}
</h:body>
</html>
我的Facelet页面标题
Facelets的Hello:#{Hello.value}
对于构建项目,我使用pom.xml:
....
<packaging>war</packaging>
<name>Simple web app</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
。。。。
战争
简单web应用程序
org.apache.maven.plugins
maven战争插件
2.4
假的
爪哇
JavaEEAPI
7
假如
根据,FacesServlet
将在以下任何条件为真时自动注册:
- 在
WEB-INF
- 在应用程序类路径的jar的
目录中可以找到META-INF
文件faces config.xml
- 在应用程序类路径中jar的
目录中可以找到以META-INF
结尾的文件名.faces config.xml
上下文参数在javax.faces.CONFIG_文件
或web.xml
中声明web fragment.xml
- 传递给
实现的ServletContainerInitializer
方法的类的onStartup()
不是空的Set
如果您仅将
web.xml
用于注册FacesServlet
,则如果满足上述任何条件,则该选项是可选的。摘自JavaServerFaces 2.0,完整参考:
Web应用程序的Web.xml文件中的一个条目启用Faces控制器servlet
当指定某个URL模式时,例如/faces/。在上运行JSF2.0时
Servlet 3.0容器(如Sun的Glassfish v3)的web.xml是可选的。如果没有
找到web.xml后,Faces控制器servlet将自动映射到
常用的URL模式:/faces/、.jsf和.faces
因此,您应该尝试以下方法:
localhost:8080/mywebapp/faces/index.xhtml
我已经将web.xml添加到web-INF中,在那里我为Facesservlet编写了配置,正如我在这个文件中找到的那样,我的web应用现在正在工作,但我仍然不知道如何在没有web.xml的情况下运行它。请粘贴pom.xml
的全部内容。是的,感谢Arun Gupta,我错过了Faces控制器的自动映射,实际上我正在阅读您的书“JavaEE7 Essentials”,并尝试用JSF2.2检查示例。对我来说,这是第一次使用JSF.Cool,本书中的所有示例都可以在以下网站获得: