我在 Eclipse 中创建了一个简单的 Maven 项目 我的容器是 Glassfish 4 。
首先,我添加了以下依赖项:
的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>maven_cinema</groupId>
<artifactId>maven_webapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>maven_webapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>maven_webapp</finalName>
</build>
</project>
然后我在WEB-INF文件夹中创建了一个空的beans.xml 然后在项目属性中,我将 Java 版本更改为 1.8 然后动态网络模块改为 3.1 然后启用 JavaServerFaces 2.2。(我下载了 Mojarra 库。)
这是我的模特:
package model;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class LoginModel implements Serializable {
private static final long serialVersionUID = 1L;
private String name = "Maven";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
当我尝试在JSF页面中绑定属性时:
<body>
<h:outputText value="#{loginModel.name}" />
</body>
身体是空的。
但是当我做的事情如下:
<h:outputText value="abc" />
有效。
所以必须是 CDI 。
我需要配置什么?