2011-05-20 60 views
3

「preRenderView」事件處理程序,我有以下片段:JSF 2.0,叫了兩聲

<?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" 
     xmlns:f="http://java.sun.com/jsf/core"> 

<f:metadata> 
    <f:event type="preRenderView" listener="#{workflowController.test}"/> 
</f:metadata> 

<h:head> 
    <title>Simple JSF Facelets page</title> 
</h:head> 

<h:body> 
    Hello, Place your content here 
</h:body> 

</html> 

當我打開網頁時,WorkflowController.test()方法被調用兩次(它只是一個簡單的方法,這使得一個日誌條目)。你知道爲什麼被稱爲兩次嗎?

謝謝。

+0

哪個JSF impl/version正好?我不記得在Mojarra 2.0.x和2.1.x上看到過這個。 – BalusC 2011-05-20 12:27:04

+0

我正在使用[Glassfish JavaX依賴關係](http://repo2.maven.org/maven2/javax/javaee-web-api/6.0/javaee-web-api-6.0.pom)。我也注意到,重新啓動域後,這種情況只發生一次。在所有其他連續的請求中,該事件僅觸發一次。 – Dario 2011-05-23 09:46:42

+0

延遲響應,但我剛剛在preRenderView中遇到了同樣的問題。但在我的情況下,它每次都發生,而不是僅在域啓動後才發生。 – Aquillo 2012-10-22 12:03:34

回答

5

試着把<f:event/>標籤放在<f:metadata>之外,它對我很有用(mojarra 2.1.0)。