Компонент JSF создается более одного раза

Когда я открываю страницу jsf, catalog bean создается два раза. Так почему же это происходит? jsf-страница:

<h:dataTable value="#{catalog.products}" var="p">
    <h:column>
        <h:form>
            <h:commandLink action="detail?faces-redirect=true"
                value="#{p.brand} #{p.model}">
                <f:setPropertyActionListener value="#{p}"
                    target="#{ph.currentProduct}" />
            </h:commandLink>
        </h:form>
    </h:column>
</h:dataTable>

фасоль:

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.inject.Inject;
import javax.inject.Named;

import dataLayer.Dao;

@Named
@RequestScoped
public class Catalog implements Serializable {

    @Inject
    private Dao dao;

    private List<Product> products;
    HtmlDataTable dataTable;

    public Catalog() {
    }

    @PostConstruct
    private void init() {
        System.out.println("catalog bean created");
        dataTable = new HtmlDataTable();
        products = dao.getShavers();
    }
...

person rozerro    schedule 06.03.2016    source источник
comment
Какой сервер вы используете?   -  person sinclair    schedule 06.03.2016
comment
@sinclair JBoss AS 7.1   -  person rozerro    schedule 06.03.2016
comment
Я просто предполагаю, но я думаю, что второй компонент создается для более быстрой обработки следующего запроса путем инициализации компонента перед запросом. Взгляните на документацию Jboss о объединении компонентов.   -  person sinclair    schedule 06.03.2016
comment
HtmlDataTable собственности там нет. Избавиться от этого. <h:commandLink> тоже странный. Я ожидал увидеть там <h:link>. Это, возможно, полезно в качестве рекомендаций для такого подхода master-detail: stackoverflow.com/q/8459903 Что касается конкретной проблемы , просто поставьте точку останова в методе init() и проверьте стек вызовов, кто/что/почему его вызвал.   -  person BalusC    schedule 06.03.2016
comment
Свойство @BalusC HtmlDataTable предназначено для целей нумерации страниц, поэтому, если вы имеете в виду, что тысяча из этой HtmlDataTable, тогда мне нужно найти другой подход к нумерации страниц.   -  person rozerro    schedule 06.03.2016
comment
Это был не ответ, а комментарий. Проблема не видна в информации, предоставленной до сих пор.   -  person BalusC    schedule 06.03.2016
comment
@BalusC На самом деле причина была в commandLink's. С любой страницы, где было от commandLink до catalog.xhtml, bean-компонент каталога создавался дважды, поэтому замена на h:link решила проблему. Но как на самом деле проблема связана с поведением commandLink? .   -  person rozerro    schedule 07.03.2016
comment
Потому что вы отправляете перенаправление после обратной передачи, которая уничтожает текущий запрос и создает новый запрос. Поскольку bean-компонент находится в области запроса, это будет затронуто.   -  person BalusC    schedule 07.03.2016
comment
@BalusC Я использовал ?faces-redirect=true с commandLink's в основном для правильного url's в браузере, поэтому, если не использовать перенаправления, ссылки останутся старыми, так как в этом случае сохранить правильные ссылки при использовании commanLinks без перенаправления?   -  person rozerro    schedule 07.03.2016
comment
Пища для чтения: stackoverflow.com/questions/15521451/ Это также связано как 1st См. также ссылку в дубликате. Попробуйте их тоже почитать, в моих ответах они обычно уже отвечают на дополнительные вопросы :)   -  person BalusC    schedule 07.03.2016