有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJSF创建另一个managedBean的实例

我是新使用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配置中的导航规则。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,一方面是带有RequestScope注释的“EstacionMbReq”,另一方面是带有SessionScope注释的“EstacionMBess”。问题在于,当我单击“Editar”或“Eliminar”命令链接时,它会执行名为“EstacionMbReq”的managedBean构造函数,而不是我指定的managedBean:“estacionmbess”

有什么帮助吗?可以在同一视图中使用两个managedBeans吗?多谢各位


共 (1) 个答案

  1. # 1 楼答案

    构造函数EstacionMbSess在每个HTTP用户会话中只执行一次,并且是在处理单击请求之前执行的^每次从该页面发送请求时,都会创建{}