单个println的多个日志语句

时间:2011-12-14 14:19:57

标签: java jsf java-ee

我正在编写我的arraylist的大小只是为了调试目的,但我注意到我在Eclipse的日志窗口中多次获取该值。它每次都不同,它适用于我使用System.out.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());
    }
}

2 个答案:

答案 0 :(得分:1)

由于JSF的请求响应生命周期,您在日志中多次获得该值。初始请求导致4个日志条目,因为JSF执行还原视图,应用请求值,处理事件和渲染响应阶段。

答案 1 :(得分:0)

JSF倾向于不止一次调用辅助bean上的方法(如本Seam performance tips文章中所述)。计算结果通常是一个好主意,将其粘贴在一个字段中,并让JSF页面引用一个只返回字段值的方法。