我正在嘗試使用視圖範圍創建一個bean,但每次訪問bean時都會調用@PostConstruct函數。 這裏是一個非常簡單的例子(.xhtml):viewsbeand bean在後臺bean的每次訪問時調用
<?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://java.sun.com/jsf/html">
<h:outputText value="#{documentFormBeanTest.test()}" />
<h:outputText value="#{documentFormBeanTest.test()}" />
</html>
,這裏是我的豆:
package lu.etat.pch.docroom.ejb.controllers;
import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;
import java.io.Serializable;
/**
* User: André Faber
* Date: 22/04/13
*/
@Named
@ViewScoped
public class DocumentFormBeanTest implements Serializable {
@PostConstruct
public void init() {
System.out.println("*************************************************************");
}
public void test() {
System.out.println("Test");
}
}
現在我可以在我的日誌中看到,該PostConstruct函數被調用,經常是我調用「測試」功能(在這種情況下是兩次)。
不應該只創建一次bean(當我進入頁面)或者我錯過了什麼?
在此先感謝
我相當強烈地認爲CDI的'@ ViewScoped'實現有問題。嘗試使用JSF版本(使用'@ ManagedBean'完成而不是CDI)並查看差異 – kolossus 2014-10-02 02:59:37
非常感謝!用@ManagedBean這個bean工作正常。 – user2423989 2014-10-02 12:13:00