Несколько операторов журнала из одного println - PullRequest
0 голосов
/ 14 декабря 2011

Я пишу размер моего массива только для целей отладки, но замечаю, что получаю значение несколько раз в окне журнала в 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 ]

1 голос
/ 14 декабря 2011

Вы получаете значение несколько раз в журнале из-за жизненного цикла запроса ответа JSF. Первоначальный запрос приводит к 4 записям в журнале, потому что JSF выполняет этап Восстановления, Применить значения запроса, События процесса и Ответ визуализации.

0 голосов
/ 14 декабря 2011

JSF имеет тенденцию вызывать методы на компоненте поддержки более одного раза (как упомянуто, например, в этой статье Советы по производительности шва ). Как правило, рекомендуется вычислить результат, вставить его в поле и указать, чтобы страница JSF ссылалась на метод, который просто возвращает значение поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...