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 mostrarparámetro y agnadirParametro
tag select
<%=agnadirparámetro ("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
- en esta lista de valores tiene que existir un elemento
- Struts2 buscará en tu Action (en realidad en el “stack”, pero bueno) un accesor (“getter”) llamado getListaConvocatoriaParticipanteEspecialidades()
- es la lista de valores que se han cargado desde el action que llama a esta jsp
-
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" />