2011-12-14 22 views
0

我只是爲了調試目的而寫了我的arraylist的大小,但是我注意到我在Eclipse的日誌窗口中多次獲取該值。每次都是不同的,它適用於我用System.out.println(..)調試的其他地方爲什麼會發生這種情況?來自單個println的多個日誌語句


登錄窗口

INFO: 4 
INFO: 4 
INFO: 4 
INFO: 4 

查看

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

Backingbean

import java.io.Serializable; 
import java.util.ArrayList; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

@ViewScoped 
@ManagedBean 
public class DefaultNewQuestionHandler extends QuestionHandler implements Serializable { 

    private static final long serialVersionUID = -6986655384538762284L; 

    @Override 
    public void init() { 
     answers = new ArrayList<Answer>(); 

     for (int i = 0; i < 4; i++) { 
      addAnswerAlternative(); 
     } 

     System.out.println(answers.size()); 
    } 
} 
+0

你能提供`addAnserAlternative`嗎?另外,試着改變`for`循環,就像這樣:`i <6`。我認爲有一個問題。 – Dragos 2011-12-14 14:24:25

回答

1

由於JSF的請求響應生命週期,您會在日誌中多次獲取值。初始請求導致4個日誌條目,因爲JSF執行「還原視圖」,「應用請求值」,「流程事件」和「呈現響應」階段。

0

JSF趨於呼籲支持bean的方法不止一次(如提及例如,在此Seam performance tips articl E)。計算結果通常是一個好主意,將其粘貼到一個字段中,並讓JSF頁面引用一個只返回字段值的方法。

+0

我不確定我是否理解? – LuckyLuke 2011-12-14 14:25:49

相關問題