我正在使用@ManagedBean並嘗試更改爲CDI @Named,因爲前一個將被棄用。javax.el.PropertyNotFoundException目標無法訪問,標識符'xxxController'解析爲空
只要我改變我的控制器類之一,使用CDI,我打了異常說控制器解析爲空。
我已經搜索了很多關於這個問題的帖子,儘可能多地閱讀,但是,目前爲止似乎沒有任何東西可以幫助我,請在我的情況下提供建議。 (也試圖刪除的lib/javax.inject-1.jar爲一體的職位建議,但沒有運氣。)
- 我得到了GF4在NB 7.4啓動。
- 部署我的應用程序沒有任何錯誤。
- 訪問頁面時沒有錯誤,除非所有變量文本都是空白的,因爲它們是在控制器中設置的,並且使用value =「#{xxxController.someText}」進行加載。
- 由於輸入變量是使用value =「#{userController.user.username}」like expression來設置的,所以我單擊提交按鈕並從控制檯日誌彈出null控制器錯誤。
ENV:
NetBeans 7.4
Glassfish 4
JDK 1.7
POM:
<dependencies>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.28</version>
<scope>provided</scope>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.8.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.8.Final</version>
</dependency>
<!-- JSF -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.5</version>
</dependency>
<!-- JSTL -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- PrimeFaces -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>all-themes</artifactId>
<version>1.0.10</version>
</dependency>
<!-- Security -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.3</version>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<!-- CDI -->
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.1</version>
</dependency>
<!-- Logger -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-rc1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-rc1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.0-rc1</version>
</dependency>
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
beans.xml中:
個<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
faces-config.xml中
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
</faces-config>
控制器類看起來像:
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class UserController implements Serializable {
XHTML主叫豆:
<h:outputText value="Username: " />
<p:inputText value="#{userController.user.username}">
</p:inputText>
行家文件夾結構,接着用:
WEB-INF
--beans.xml
--faces-config.xml
--glassfish-web.xml
--web.xml
2014年3月14日: 發現控制器的構造函數在使用CDI時從未調用過。使用@ManagedBean時完全沒有問題。
請發佈您的faces-config.xml文件的內容。 –
補充說,感謝您的快速提醒。 – HxHxH
找到使用CDI時從未調用過的控制器的構造函數。使用@ManagedBean時完全沒有問題。 – HxHxH