According to the tutorial found here: https://docs.oracle.com/javaee/7/tutorial/jsf-configure001.htm#GIRCR ,
a class annotated with @Named
and a scope annotation is automatically registered as a CDI bean by the JSF application. However, whenever the bean is invoked on a particular request in my application, I get this error:
Target Unreachable, identifier 'query' resolved to null] with root cause
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'query' resolved to null
This is the class that I have:
package beans;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class Query {
private String name;
public Query() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
What could I be doing wrong? Here are the maven dependencies I'm using:
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.13</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
When I replace the @Named
annotation with @ManagedBean
, everything works and the bean is registered fine. But with the Java EE 7 specification, I should be able to use the @Named
annotation right?