加载带参数的局部视图

时间:2017-11-28 20:54:10

标签: java jsf primefaces

我有一个很大的主Bean DetalleSolicitudTneBean.java,其中包含大量信息。我在许多部分视图中分发信息,因为每个部分视图取决于从主视图中获取的数据。

@RequestScoped
@Named("detalleSolicitudTneBean")
@URLJoins(joins = { @URLJoin(path = "/web/detalle_solicitud_tne/{refExp}", to = "/pages/web/detalle_solicitud_tne.jsf") })
public class DetalleSolicitudTneBean extends BaseBeanImpl implements Serializable
{
    @URLParameter
    private String refExp;

    @Inject
    private TrAPIUI apiUI;

    private TrExpediente trExpediente;

    @URLAction(ingorePostback = true, views = { "/pages/web/detalle_solicitud_tne.jsf" })
    public void cargarDatosSolicitud()
    {
        //a lot of code
        trExpediente = apiUI.obtenerExpedientes(refExp);//returns one trExpediente object
        //more code
    }

    public TrExpediente getTrExpediente()
    {       return trExpediente;    }
    public void setTrExpediente(TrExpediente trExpediente)
    {       this.trExpediente = trExpediente;   }
}

然后我有这个主要Bean的detalle_solicitud_tne.xhtml调用detalle_solicitud_persona

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:g="http://www.guadaltel.es/jsf2"
template="/layout/#{layout.template}/office_level.xhtml">

    <ui:define name="body">
        <legend>Detalles de la solicitud</legend>
        <!-- I want to call my page detalle_solicitud_persona here passing the parameter trExpediente-->
        <loadMyPartialView src="detalle_solicitud_persona(#{detalleSolicitudTneBean.trExpediente})"/>
        <!-- many other partial view calls -->
    </ui:define>
</ui:composition>

最后,我有了第二个Bean及其部分视图,该视图是从detalle_solicitud_tne.xhtml

调用的
@RequestScoped //is this scope ok?
@Named("detalleSolicitudPersona")
@URLJoins(joins = { @URLJoin(path = "/web/detalle_solicitud_persona", to = "/pages/web/detalle_solicitud_persona.jsf") })
public class DetalleSolicitudPersona extends BaseBeanImpl implements Serializable
{
    @Inject
    private IPersonasDao personasDao;

    private Personas personas;

    //I need this method to be called to fill the class atributes before get any atribute from the class
    public void cargarDatosSolicitud()
    {
        personas = personasDao.getPersonasByexp(trExpediente);
        //fill and set many other info
    }

    //getters y setters
    public Personas getPersonas()
    {       return personas;    }

    public void setPersonas(Personas personas)
    {       this.personas = personas;   }
}

及其观点detalle_solicitud_persona.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:g="http://www.guadaltel.es/jsf2">

    <p:outputPanel>
        <p:fieldset>
            <legend>Información personal</legend>
            <div class="form-group">
                <g:label value="Nombre" id="nombre">
                    <h:outputText value="Nombre" />
                </g:label>
                <div>
                    <h:outputText id="runFilter" value="#{detalleSolicitudPersona.personas.persPrimerNombre}" />
                </div>
            </div>
            <!-- many other class atributes -->
        </p:fieldset>
    </p:outputPanel>
</ui:composition>

因此,要恢复,我需要在我的第二个Bean中加载我的角色数据,具体取决于从我的主视图中收到的参数trExpediente,以便在我的第二个局部视图中显示来自personas的数据。 / p>

0 个答案:

没有答案