strutsTags

propósito

  • Para tratar ejemplos sobre las tags en Struts
  • ejemplos con PADDOC

  • parece que para usar los tags no es necesario el getter y el setter en el action

    • en PADDOC los usamos porque usamos los atributos desde java y por eso hacemos le recuperación del requuest y no del stackec

tags

  • para usar iterator anidados
<s:iterator var="parent" value="parents">
    <s:iterator var="child" value="#parent.children">
        <s:property value="#child.name"/>
    <s:iterator>
<s:iterator>

menu PADDOC

<%
//-------------------------------------------------------------------------------------------------
// Submenú de presolicitudes en actos accediendo a la sesión directamente
//-------------------------------------------------------------------------------------------------
%>

<div class='seemTable2 ancho100 centrado fondoApl3'>
  <div class='seemTr2'>
    <span class='pequena1 textoApl1 negrita'>
    &#183; 
    DATOS DE LA SOLICITUD
    | Curso: <s:property value = "#session.sesionDatosActo.curso.descripcion"/> 
    | Fecha Acto: <s:property value = "#session.sesionDatosActo.fechaCreacion"/> 
    | Código Solicitud:  <s:property value = "#session.sesionDatosActoPresolicitud.codigo"/> 
    | &#183;
      <br/>
    </span>
  </div>
</div>

menu anterior

<%
//-------------------------------------------------------------------------------------------------
// Submenú de presolicitudes de actos
//-------------------------------------------------------------------------------------------------
%>

<%@ page import="es.aragon.epacf.cts.menus.*" %>
<%@ page import="es.aragon.epacf.cts.aplicacion.*" %>
<%@ page import="es.aragon.epacf.bl.usuarios.*" %>
<%@ page import="es.aragon.epacf.cts.actos.*" %>
<%@ page import="java.util.*" %>

<%!

//-----------------------------------------------------------------------------
// Se muestra la cabecera de la solicitud
//----------------------------------------------------------------------------
public String mostrarCabeceraSolicitud (ActoDatosSesionDocente sesionDatosActo, ActoPresolicitudDatosSesion sesionDatosActoPresolicitud)
{   

    String cad = "";
    
    DatosMaestrosBL datosMaestrosBL = new DatosMaestrosImplBL();
    
    cad += "<div class='seemTable2 ancho100 centrado fondoApl3'>";
    cad += "    <div class='seemTr2'>";
    cad += "<span class='pequena1 textoApl1 negrita'>";
    cad += "&#183; ";
    cad += " DATOS DE LA SOLICITUD";        
    cad += " | Curso: " + sesionDatosActo.getCurso().getDescripcion();
    cad += " | Fecha Acto: " + sesionDatosActo.getFechaCreacion();
    cad += " | Código Solicitud: " + sesionDatosActoPresolicitud.getCodigo();
    cad += " | " + sesionDatosActoPresolicitud.getActoPresolicitudEstado().getDescripcion();
    cad += " &#183;";
    cad += "<br/>";
    cad += "</span>";
    cad += "    </div>";        
    cad += "</div>";
    
    return cad;
}   

%>

pagina de titulaciones

  • con los dos métodos de mostrar información
<%
//-------------------------------------------------------------------------------------------------
// Muestra la página de gestión de titulaciones de la presolicitud
//-------------------------------------------------------------------------------------------------
%>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<%@ page import="java.util.*" %>
<%@ page import="es.aragon.epacf.cts.menus.*" %>
<%@ page import="es.aragon.epacf.cts.aplicacion.*" %>
<%@ page import="es.aragon.epacf.bl.usuarios.*" %>


<%@ page import="es.aragon.epdtm.ent.datosMaestros.*" %>
<%@ page import="es.aragon.epacf.bl.actos.*" %>
<%@ page import="es.aragon.epacf.bl.usuarios.*" %>
<%@ page import="es.aragon.epacf.ent.actos.*" %>
<%@ page import="es.aragon.epacf.ent.vacantes.*" %>
<%@ page import="es.aragon.epacf.cts.personas.*" %>
<%@ page import="es.aragon.eprem.ent.meritos.*" %>
<%@ page import="es.aragon.eprem.cts.meritos.*" %>

<%@ include file="/jsp/comun/util.jsp" %>
<%@ include file="/jsp/datosComunes.jsp" %>
<%@ include file="/jsp/menuAplicacion.jsp" %>
<%@ include file="/jsp/actos/gestionActo/datosComunes.jsp" %>
<%@ include file="/jsp/actos/gestionActo/menuActos.jsp" %>
<%@ include file="/jsp/actos/gestionActo/presolicitudes/gestionPresolicitud/datosComunes.jsp" %>
<%
    String operacionBreadcrumb = enlaceActoEleccionSolicitudesBreadcrumb + " / " + enlaceActoEleccionSolicitudBreadcrumb + " / Documentos";

    Acto acto = (Acto) request.getAttribute ("acto");
    List<ActoPresolicitudTitulacion> listaActoPresolicitudTitulaciones = (List<ActoPresolicitudTitulacion>) request.getAttribute ("listaActoPresolicitudTitulaciones");
    List<ActoPresolicitudVacante> listaActoPresolicitudVacantes = (List<ActoPresolicitudVacante>) request.getAttribute ("listaActoPresolicitudVacantes");
    List<MeritoFormacionAcademica> listaMeritosFormacionAcademica = (List<MeritoFormacionAcademica>) request.getAttribute ("listaMeritosFormacionAcademica");

    int orden;
    String estilo;
%>

    <%@ include file="/jsp/comun/cabecera.jsp" %>
    <%= mostrarMenuAplicacion (session, operacionBreadcrumb) %> 
    <%@ include file="/jsp/actos/gestionActo/presolicitudes/gestionPresolicitud/menuActoPresolicitud.jsp" %>
    
    <h1>Documentación</h1>
                
    <br/>
    
    <%@ include file="/jsp/comun/mostrarError.jsp" %>
    
    <%
                
        //Se muestran las vacantes que requieren la presentación de documentación adicional
        if (listaActoPresolicitudVacantes == null || listaActoPresolicitudVacantes.size() == 0)
        {       
            out.println(mostrarMensajeInformativo ("No ha seleccionado vacantes que exigen un requisito adicional", "fondoVerde"));         
        }
        else
        {
            
            out.println(mostrarMensajeInformativo ("Se han seleccionado vacantes que exigen un requisito adicional. Puede consultar más abajo las habilitaciones que posee.", "fondoVerde"));           

            out.println("<fieldset class='borde1SolidoApl1 alineaTabla ancho90'>");
            out.println("   <legend class='fondoApl2 negrita'>Vacantes que requieren una habilitación o titulación adicional</legend>");
            out.println("   <br/>");
            out.println("   <table class='ancho100' id='tablaTitulaciones1' summary='Tabla que muestra las vacantes que requieren documentación'>");
            out.println("       <tr class='fondoApl2'>");
            out.println("           <th id='idVacante' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho10'>Id.</th>");
            out.println("           <th id='cuerpo' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho15'>Cuerpo</th>");
            out.println("           <th id='especialidad' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho15'>Especialidad</th>");
            out.println("           <th id='documentacionPerfilada' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho20'>Documentación del Perfil</th>");
            out.println("           <th id='observaciones' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho20'>Observaciones</th>");
            out.println("       </tr>");
            
            orden = 1;
            estilo = "";
            Vacante vacante;
            for (ActoPresolicitudVacante actoPresolicitudVacante:listaActoPresolicitudVacantes)
            {
                estilo = (orden==1)?"":" class='fondoApl3' ";
                vacante = actoPresolicitudVacante.getActoVacante().getVacante();
                out.println("<tr" + estilo + ">");
                out.println("   <td headers='idVacante' class='padding2 pequena2 centrado'>" + vacante.getIdVacante() + "</td>");                   
                out.println("   <td headers='cuerpo' class='padding2 pequena2 centrado'>" + vacante.getCuerpo().getIdCuerpo() + "-" + vacante.getCuerpo().getDescripcion() + "</td>");                  
                out.println("   <td headers='especialidad' class='padding2 pequena2 centrado'>" + vacante.getEspecialidad().getIdEspecialidad() + "-" + vacante.getEspecialidad().getDescripcion() + "</td>");                                  
                out.println("   <td headers='documentacionPerfilada' class='padding2 pequena2 centrado'>" + vacante.getRequisitosPerfilada() + "</td>");                                    
        
                //Si solamente requiere validación por perfil, y tiene el perfil, no necesita presentar ningún tipo de documentación adicional
                if (actoPresolicitudVacante.isRequiereValidacionPerfil() 
                        && !actoPresolicitudVacante.isRequiereValidacionDocumentacionAdicional()
                        && actoPresolicitudVacante.isCumpleValidacionPerfil()
                )
                {
                    out.println("   <td headers='observaciones' class='padding2 pequena2 izquierda fondoVerde'>");
                    out.println("       La vacante exige un requisito adicional que ya ha aportado anteriormente por lo que ya cumple las condiciones para su selección.");
                    out.println("   </td>");
                }
                else
                {
                    out.println("   <td headers='observaciones' class='padding2 pequena2 izquierda fondoRojo'>");
                    out.println("       La vacante exige un requisito adicional. Verifique que dispone de la habilitación o de la titulación requerida.");
                    out.println("   </td>");
                }
                out.println("</tr>");
                orden = orden%2 + 1;
            }       

            out.println("</table>");
            out.println("</fieldset>");
        }
        
        out.println("<br/>");
    %>
    
    
    <%
    
    //Se muestran las titulaciones presentadas en el acto de elección
    if (listaActoPresolicitudTitulaciones != null && listaActoPresolicitudTitulaciones.size() > 0)
    {               
        out.println("<fieldset class='borde1SolidoApl1 alineaTabla ancho90'>");
        out.println("   <legend class='fondoApl2 negrita'>Nuevos documentos aportados en la solicitud</legend>");
        out.println("   <br/>");
        out.println("   <table class='ancho100' id='tablaTitulaciones1' summary='Tabla que muestra los titulaciones incorporados'>");
        
        out.println("       <tr class='fondoApl2'>");
        out.println("           <th id='id' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho5'>Id</th>");
        out.println("           <th id='tipo' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho10'>Tipo</th>");
        out.println("           <th id='titulacion' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho20'>Titulación</th>");  
        out.println("           <th id='nombre' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho15'>Nombre</th>");
        out.println("           <th id='descripcion' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho40'>Descripción</th>");
        out.println("           <th id='operaciones' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho5' colspan='2'></th>");            
        out.println("       </tr>");
        
        orden = 1;
        estilo = "";
        for (ActoPresolicitudTitulacion actoPresolicitudTitulacion:listaActoPresolicitudTitulaciones)
        {
            estilo = (orden==1)?"":" class='fondoApl3' ";           
            out.println("<tr" + estilo + ">");
            out.println("   <td headers='id' class='padding2 pequena2 centrado'>" + actoPresolicitudTitulacion.getId() + "</td>");                  
            out.println("   <td headers='tipo' class='padding2 pequena2 centrado'>" + actoPresolicitudTitulacion.getPersonaTitulacionTipo().getDescripcion() + "</td>");                                    
            out.println("   <td headers='titulacion' class='padding2 pequena2 centrado'>" + actoPresolicitudTitulacion.getTitulacion().getDescripcion() + "</td>");             
            out.println("   <td headers='nombre' class='padding2 pequena2 centrado'>" + actoPresolicitudTitulacion.getNombre() + "</td>");
            out.println("   <td headers='descripcion' class='padding2 pequena2 izquierda respetaSaltoLinea'>" + actoPresolicitudTitulacion.getDescripcion() + "</td>");                 
            
            if (ControlAccesoActosSolicitudesBL.caDescargarActoPresolicitudTitulacionBL(sesionUsuario, acto, sesionDatosActo.isConvocado(), sesionDatosActoPresolicitud))
            {           
                out.println("   <td headers='operaciones' class='padding2 centrado'>");         
                out.println("       <a title='Descargar presolicitud titulacion' href='actProcessDescargarActoPresolicitudTitulacion?id=" + actoPresolicitudTitulacion.getId() + "'>");
                out.println("           <img alt='Descargar presolicitud titulación' src='images/descargar.gif' class='sinBorde'>");
                out.println("       </a>");         
                out.println("   </td>");
            }

            if (ControlAccesoActosSolicitudesBL.caEliminarActoPresolicitudTitulacionBL(sesionUsuario, acto, sesionDatosActo.isConvocado(), sesionDatosActoPresolicitud))
            {           
                out.println("   <td headers='operaciones' class='padding2 centrado'>");         
                out.println("       <a title='Eliminar presolicitud titulacion' href='actInitEliminarActoPresolicitudTitulacion?id=" + actoPresolicitudTitulacion.getId() + "'>");
                out.println("           <img alt='Eliminar presolicitud titulación' src='images/papelera.gif' class='sinBorde'>");
                out.println("       </a>");         
                out.println("   </td>");
            }
            
            out.println("</tr>");
            orden = orden%2 + 1;
        }

        out.println("</table>");
        out.println("</fieldset>");
    }
    %>
    
    <br/>
    <br/>
    
    <div class='centrado ancho100 margen0'>
        <div class='seemTable2 borde1SolidoApl1'>
            <div class='seemTr2 fondoApl2'>
                <a style='background-color: #ffffff; color: #000000; font-weight: bold; padding: 2px;' class='enlaceBoton' title='Volver' href='actInitGestionActoPresolicitud.action'>Volver</a>
            </div>
        </div>
    </div>

    <br/>
    
<%
    //Se muestran las titulaciones de formación académica aportados en otras convocatorias
    if (listaMeritosFormacionAcademica != null && listaMeritosFormacionAcademica.size() > 0)
    {               
        out.println("<fieldset class='borde1SolidoApl1 alineaTabla ancho70'>");
        out.println("   <legend class='fondoApl2 negrita'>Habilitaciones</legend>");
        out.println("   <br/>");
        out.println("   <table class='ancho100' id='tablaTitulaciones2' summary='Tabla que muestra los titulaciones aportadas en otras convocatorias'>");
        
        out.println("       <tr class='fondoApl2'>");
        out.println("           <th id='id' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho10'>Cuerpo</th>");
        out.println("           <th id='descripcion' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho90'>Especialidad</th>");
        out.println("       </tr>");
        
        orden = 1;
        estilo = "";
        for (MeritoFormacionAcademica meritoFormacionAcademica:listaMeritosFormacionAcademica)
        {
            if (meritoFormacionAcademica.getMeritoEstado().getId().equals(MeritoEstadoCTS.MERITO_ESTADO_VALIDO))
            {
                estilo = (orden==1)?"":" class='fondoApl3' ";           
                out.println("<tr" + estilo + ">");
                out.println("   <td headers='id' class='padding2 pequena2 centrado'>" + meritoFormacionAcademica.getTitulacion().getId() + "</td>");                    
                out.println("   <td headers='descripcion' class='padding2 pequena2 centrado'>" + meritoFormacionAcademica.getTitulacion().getDescripcion() + "</td>");                  
            }
            out.println("</tr>");
            orden = orden%2 + 1;
        }

        out.println("</table>");
        out.println("</fieldset>");
    }
    %>
    <br/>
    <s:property value="listaSirhgaHabilitaciones.size" /> <br />
    <s:property value="listaSirhgaHabilitaciones.empty" /> <br />
    <br/>
        <s:if test="listaSirhgaHabilitaciones.empty">
            listaSirhgaHabilitaciones es nula
        </s:if>
        <s:else>
            <fieldset class='borde1SolidoApl1 alineaTabla ancho70'>
                <legend class='fondoApl2 negrita'>Habilitaciones</legend>
                    <br/>
                    <table class='ancho100' id='tablaTitulaciones2' summary='Tabla que muestra las habilitaciones que tiene el participante'>
                        <tr class='fondoApl2'>
                            <th id='id' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho40'>Cuerpo</th>
                            <th id='descripcion' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho60'>Especialidad</th>
                        </tr>
                        <s:iterator value="listaSirhgaHabilitaciones" status="estatus">
                            <s:if test="#estatus.even == true">
                                 <tr class='fondoApl3'>
                            </s:if>
                            <s:else >
                                 <tr>
                            </s:else>
                            <td headers='id' class='padding2 pequena2 centrado'>
                            <s:property value="cuerpo.idCuerpo" /> 
                            <s:property value="cuerpo.descripcion" /></td>
                            <td headers='descripcion' class='padding2 pequena2 centrado'>
                            <s:property value="especialidad.idEspecialidad" /> 
                            <s:property value="especialidad.descripcion" /></td> 
                        </tr>
                        </s:iterator>
                    </table>
            </fieldset>
        </s:else>
        <br/>   
        <br/>   
        
        <s:if test="listaActoPresolicitudTitulaciones.empty">
            listaActoPresolicitudTitulaciones es nula
        </s:if>
        <s:else>
            <fieldset class='borde1SolidoApl1 alineaTabla ancho70'>
                <legend class='fondoApl2 negrita'>listaActoPresolicitudTitulaciones</legend>
                    <br/>
                    <table class='ancho100' id='tablaTitulaciones2' summary='Tabla que muestra las habilitaciones que tiene el participante'>
                        <tr class='fondoApl2'>
                            <th id='id' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho40'>Cuerpo</th>
                            <th id='descripcion' class='padding2 padding5Sup padding5Inf fondoApl2 negrita pequena1 ancho60'>Especialidad</th>
                        </tr>
                        <s:iterator value="listaActoPresolicitudTitulaciones" status="estatus">
                            <s:if test="#estatus.even == true">
                                 <tr class='fondoApl3'>
                            </s:if>
                            <s:else >
                                 <tr>
                            </s:else>
                            <td headers='id' class='padding2 pequena2 centrado'>
                            <s:property value="cuerpo.idCuerpo" /> 
                            <s:property value="cuerpo.descripcion" /></td>
                            <td headers='descripcion' class='padding2 pequena2 centrado'>
                            <s:property value="especialidad.idEspecialidad" /> 
                            <s:property value="especialidad.descripcion" /></td> 
                        </tr>
                        </s:iterator>
                    </table>
            </fieldset>
        </s:else>
        <br/>   
        <br/>       
        
    <%@ include file="/jsp/comun/piePagina.jsp" %>
                
</html>

tag textfield

  • para sustituir mostrarParametro y agnadirParametro

tag select

<%=agnadirParametro ("convProcessAgnadirPeticionesGenerales_Especialidad_idEspecialidad", "Especialidad *", 90) %>
<s:select name="convocatoriaPresolicitudPeticionGeneralSeleccionada.especialidad.idEspecialidad" listKey="especialidad.idEspecialidad" listValue="especialidad.datosCombo" list="listaConvocatoriaParticipanteEspecialidades"  onchange="actualizarDatos (this.form);"/></span>         
  • name
    • es donde se almacena el valor seleccionado en el combo
  • listKey
    • es el valor que se almacena es decir la clave
  • listValue
    • es el valor que se muestra es decir la descripción
  • list

    • es la lista de valores que se han cargado desde el action que llama a esta jsp
    • en esta lista de valores tiene que existir un elemento especialidad.idEspecialidad y un elemento especialidad.datosCombo
    • Struts2 buscará en tu Action (en realidad en el “stack”, pero bueno) un accesor (“getter”) llamado getListaConvocatoriaParticipanteEspecialidades()
  • para ver si se carga la lista en la página jsp por ejemplo para rastrear porque no se ve la lista

    • tener en cuenta que si sólo sale un registro puede ser por el valor nulo que se añade
Número de registros en la lista de listaConvocatoriaParticipanteEspecialidades <s:property value="listaConvocatoriaParticipanteEspecialidades.size" />