Java JSF2.2@Named不起作用
我有一个简单的maven jsf2.2项目,我使用maven jetty插件执行该项目 我有以下bean:Java JSF2.2@Named不起作用,java,maven,annotations,jetty,jsf-2.2,Java,Maven,Annotations,Jetty,Jsf 2.2,我有一个简单的maven jsf2.2项目,我使用maven jetty插件执行该项目 我有以下bean: package de.swp14i; import javax.inject.Named; //import javax.faces.bean.ManagedBean; @Named //@ManagedBean public class BeanOne { private String varFromBeanOne = "BeanOne"; public Stri
package de.swp14i;
import javax.inject.Named;
//import javax.faces.bean.ManagedBean;
@Named
//@ManagedBean
public class BeanOne {
private String varFromBeanOne = "BeanOne";
public String getVarFromBeanOne() {
return this.varFromBeanOne;
}
public void init() {
System.out.println();
}
}
这是一种观点:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html" >
<h:head>
<title>JSF 2.2 HTML5</title>
</h:head>
<h:body>
<h1>Blub</h1>
<h:outputText id="beanOne" value="#{beanOne.varFromBeanOne}"></h:outputText>
</h:body>
</html>
JSF2.2HTML5
布鲁布
如果我启动jetty并打开index.xhtml,则会呈现它,但不会显示varFromBeanOne值,并且我的bean的init函数不会在启动jetty的控制台中打印任何内容。所以我想它根本就不叫
如果我将@Named改为@ManagedBean,一切都会正常工作
这是我的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">
<!-- pom.xml specification version -->
<modelVersion>4.0.0</modelVersion>
<!-- project settings -->
<groupId>de.swp14i</groupId>
<artifactId>example</artifactId>
<version>0.1</version>
<name>example</name>
<packaging>war</packaging>
<properties>
<encoding>UTF-8</encoding>
<maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>
<maven-war-plugin.version>2.4</maven-war-plugin.version>
<jetty-maven-plugin.version>9.2.0.M1</jetty-maven-plugin.version>
</properties>
<!-- project module dependencies -->
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<!-- project maven plugins -->
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty-maven-plugin.version}</version>
<configuration>
<scanIntervalSeconds>1</scanIntervalSeconds>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
4.0.0
de.swp14i
例子
0.1
例子
战争
UTF-8
3.1
2.4
9.2.0.M1
com.sun.faces
JSFAPI
2.2.6
com.sun.faces
jsf impl
2.2.6
javax.enterprise
CDIAPI
1.2
爪哇
JavaEEAPI
7
javax.servlet
javax.servlet-api
3.1.0
org.eclipse.jetty
jetty maven插件
${jetty maven plugin.version}
1.
/
我不知道为什么会这样。但是我需要JSF2.2用于CDI1.2。一个为什么它不工作的提示,或者一个没有@ManagedBean的maven-jsf2.2示例的链接都会很好。您可以尝试清理项目并重新运行它。有时ide无法正确更新代码更改。 添加一个cdi作用域,如@ViewScoped(导入javax.faces.view.ViewScoped;),然后重试 更新: 我看到您正在使用jetty作为web容器。我搜索jetty cdi,发现jetty默认不支持cdi。焊接可用于为CDI添加支架:
谢谢你的回复,但这不会改变什么。我添加了@viewscope,重新导入了maven依赖项,重建了项目,但在我的index.xhtml中仍然没有任何值。