JSF创建另一个managedBean的实例

时间:2015-08-20 22:48:40

标签: java jsf jsf-2.2

我是新手使用jsf框架,我说中级英语,所以我希望你能理解我的问题。我有这种情况:

这是我的文件abmEstaciones.xhtml中的内容

            <ui:define name="contenido">
    <div class="box">
        <div class="box-header">
            <h3 class="box-title">Lista de Estaciones</h3>
        </div>
        <!-- /.box-header -->
        <div style="margin-top: 3%; margin-bottom: 2%;">
            <h:message for="Alta" style="color:green; font-weight: bold;" />
            <h:form id="Alta">
                <h:commandLink styleClass="btn btn-success"
                    action="#{estacionMbReq.visualizarAltaEstacion}">
                    <i class="fa fa-plus-circle"></i>
                    <span class="menu-title">Agregar</span>
                </h:commandLink>
            </h:form> 
        </div>
        <div class="box-body table-responsive">

            <h:outputText value="No hay estaciones" style="color:red; font-weight: bold;" rendered="#{empty estacionMbReq.listaEstaciones}" />
            <h:dataTable id="example1" rendered="#{not empty estacionMbReq.listaEstaciones}" value="#{estacionMbReq.listaEstaciones}"
                var="estacion" styleClass="table table-bordered table-striped">

                <h:column>
                    <f:facet name="header">Nombre</f:facet>
                #{estacion.nombre}
            </h:column>
                <h:column>
                    <f:facet name="header">Total Estacionamientos</f:facet>
                #{estacion.totalEstacionamientos}
            </h:column>
                <h:column>
                    <f:facet name="header">Cant. Estacionamientos libres</f:facet>
                #{estacion.cantEstacionamientosLibres}
            </h:column>
                <h:column>
                    <f:facet name="header">Estado</f:facet>
                #{estacion.estado}
            </h:column>

                <h:column>
                    <f:facet name="header">Opciones</f:facet>
                    <h:form id="formOpcTabla" name="formOpcTabla">
                        <h:commandLink
                            action="#{estacionMbSess.visualizarModificarEstacion}"
                            styleClass="btn btn-primary">
                            <i class="fa fa-edit"></i> Editar
                            <f:param name="idEstacion" value="#{estacion.idEstacion}" />
                        </h:commandLink>
                        <h:commandLink styleClass="btn btn-danger"
                            action="#{estacionMbSess.borradoLogico}">
                            <i class="fa fa-eraser"></i> Eliminar
                        <f:param name="idEstacion" value="#{estacion.idEstacion}" />
                        </h:commandLink>
                    </h:form>
                </h:column>
            </h:dataTable>

        </div>
        <!-- /.box-body -->
    </div>
    <!-- /.box -->
</ui:define>

这是faces-config.xml

中的导航规则
    <navigation-rule>
    <from-view-id>/abmEstaciones.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{estacionMbReq.visualizarAltaEstacion}</from-action>
        <from-outcome>successVisualizarAltaEstacion</from-outcome>
        <to-view-id>/altaEstacion.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-action>#{estacionMbSess.visualizarModificarEstacion}</from-action>
        <from-outcome>successVisualizarModificarEstacion</from-outcome>
        <to-view-id>/modificarEstacion.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-action>#{estacionMbSess.borradoLogico}</from-action>
        <from-outcome>listarEstaciones</from-outcome>
        <to-view-id>/abmEstaciones.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

我正在尝试在视图中使用两个托管bean,一方面使用requestScoped注释“EstacionMbReq”,另一方面使用SessionScoped注释使用“EstacionMbSess”。问题是,当我单击“Editar”或“Eliminar”commandLinks时,它会执行名为“EstacionMbReq”的managedBean的构造函数,而不是我指定的managedBean:“EstacionMbSess”。

有任何帮助吗?可以在同一视图中使用两个managedBeans吗?谢谢

1 个答案:

答案 0 :(得分:0)

构造函数EstacionMbSess每个HTTP用户会话只执行一次,并且在处理点击请求之前发生。每次从此页面发送请求时都会创建EstacionMbReq