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 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 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" />