2011-12-14 9 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'を提供できますか?また、 'i <6'のように' for'ループを変更しようとします。どういうわけか問題があると思います。 – Dragos

答えて

1

JSFのリクエスト応答ライフサイクルのために、ログに値が複数回表示されます。 JSFは、リストア・ビュー、アプライ・リクエスト値、プロセス・イベントおよびレンダ・レスポンス・フェーズを実行するため、最初のリクエストでは4つのログ・エントリが作成されます。

0

JSFは、複数回(本で述べた例のようにバッキングBeanのメソッドを呼び出すする傾向がありますSeam performance tips articl e)。結果を計算し、フィールドに貼り付け、フィールド値を返すメソッドをJSFページで参照させるのは、一般的には良い考えです。

+0

わかっても分かりませんか? – LuckyLuke

+0

'init()'メソッドがJSFフレームワークによって4回呼び出されるので、ログを4回取得します。 – Barend

関連する問題