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>
más librerias de tag que son archivos tld se puede ver el uso de la libreria logic en esta entrada
más sobre librerias de tag (TLD) en castellano
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'>
·
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"/>
| ·
<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 += "· ";
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 += " ·";
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 elementoespecialidad.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" />