Почему я больше всего выбираю @SessionScope для бэк-бина, пока он мне не нужен?

У меня есть BackingBean MemberSearchControler, У него есть метод search, Когда пользователь вызывает его, он извлекает всех членов из базы данных и сохраняет в Listтакже храните все идентификаторы членов в массиве int. Затем верните результат member, ссылающийся на страницу member.xhtml.
В следующем вы можете увидеть MemberSearchControler:

@ManagedBean(name="MemberSearchControler")
public class MemebrSearchControl {

    private String text;
    private List<Member> members;

    //For Create CheckBox
    private int[] membersId;
    public int[] getMembersId() {
        return membersId;
    }

    //For get Selected Member Id
    private int[] selectedMembers;
    public void setSelectedMember(int[] ids) {
        selectedMembers=ids;
    }   

    public List<Member> getMembers() {
        return members;
    }
    public int getMembersCount() {
        return membersCount;
    }

    private int membersCount;

    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }

    public String search() throws DaoImplNotFoundException, DataSourceException{
        MemberDao dao=(MemberDao) Factory.getDao(ConfigReader.getConfig().getProperty("dao.member"));
        members=dao.list(1, 10);
        membersId=new int[members.size()];
        for(int i=0;i<members.size();i++)
            membersId[i]=members.get(i).getId();
        return "member";
    }

    public String view(){
        return "view";
    }

}

в member.xhtml Я показываю данные участников, и у меня есть несколько флажков, которые возвращают идентификатор каждого участника. Вы можете увидеть member.xhtml в следующем:

<ui:define name="center-content">
        <h:form id="members">
            <div class="panel panel-primary rgt">
                <!-- Default panel contents -->

                <div class="panel-heading">
                    <div style="float: left;">


                        <h:commandLink styleClass="btn btn-primary table-button" id="btnView" action="#{ViewMemberControler.view}">
                            <h:graphicImage library="img" name="view.png"
                                styleClass=" table-icon" />
                        </h:commandLink>
                        <h:commandLink styleClass="btn btn-primary table-button" id="btnEdit">
                            <h:graphicImage library="img" name="edit-member.png"
                                styleClass=" table-icon" />
                        </h:commandLink>
                        <h:commandLink styleClass="btn btn-primary table-button" action="add">
                            <h:graphicImage library="img" name="add-member.png"
                                styleClass=" table-icon" />
                        </h:commandLink>
                    </div>
                    <h4>
                        <h:outputText value="#{msg['protected.member.table']}" />
                    </h4>
                </div>

                <!-- Table -->
                <t:selectManyCheckbox id="member" value="#{ViewMemberControler.selectedIds}" layout="spread" >
                    <f:selectItems value="#{MemberSearchControler.membersId}" itemLabel="" />
                </t:selectManyCheckbox>
                <h:dataTable styleClass="table table-condensed table-hover rgt"
                    value="#{MemberSearchControler.members}" var="member" id="checkall">

                    <h:column headerClass="cell-10">
                        <f:facet name="header">
                            <h:selectBooleanCheckbox onchange="toggle(this)"/>
                        </f:facet>
                        <t:checkbox for=":members:member" index="#{CounterControler.index}"/>
                    </h:column>
                    <h:column headerClass="cell-15">
                        <f:facet name="header">
                            <p>
                                <h:outputText value="#{msg['protected.member.table.family']}" />
                            </p>
                        </f:facet>
                        <span>#{member.lastName}</span>
                    </h:column>
                    <h:column headerClass="cell-20">
                        <f:facet name="header">
                            <p>
                                <h:outputText value="#{msg['protected.member.table.name']}" />
                            </p>
                        </f:facet>
                        <span>#{member.firstName}</span>
                    </h:column>
                    <h:column headerClass="cell-20">
                        <f:facet name="header">
                            <p>
                                <h:outputText
                                    value="#{msg['protected.member.table.share.count']}" />
                            </p>
                        </f:facet>
                        <span>#{member.shareCount}</span>
                    </h:column>
                    <h:column headerClass="cell-35">
                        <f:facet name="header">
                            <p>
                                <h:outputText
                                    value="#{msg['protected.member.table.phone.number']}" />
                            </p>
                        </f:facet>
                        <span>#{member.phone}</span>
                    </h:column>
                </h:dataTable>
                </div>
        </h:form>
    </ui:define>
</ui:composition>

Как вы можете видеть в приведенном выше коде я отправляю флажки, которые пользователь выбрал для ViewMemberControler не для MemberSearchControler, Теперь у меня есть вопрос. Почему я больше всего использую аннотацию @SessionScoped для MemberSearchControler? если я выберу @RequestScoped, отправьте выбранные значения флажка в ViewMemberControler будет провал и посмотреть member.xhtml страница снова (но в это время без каких-либо данных).

0 ответов

Другие вопросы по тегам