Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
th-app-java
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Oscar Enrique Gonzalez Escurra
th-app-java
Commits
fd8a70fe
Commit
fd8a70fe
authored
Nov 12, 2021
by
Joel Florentin
Browse files
Options
Browse Files
Download
Plain Diff
Merge con estado postulante y comentario
parents
7298d927
55d9f7f3
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
160 additions
and
8 deletions
+160
-8
curriculumsearch/src/main/java/com/roshka/DTO/PostulanteListaDTO.java
+10
-2
curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java
+19
-2
curriculumsearch/src/main/java/com/roshka/modelo/EstadoPostulante.java
+14
-0
curriculumsearch/src/main/java/com/roshka/modelo/EstadoPostulanteConverter.java
+35
-0
curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java
+20
-0
curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java
+22
-2
curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp
+30
-1
curriculumsearch/src/main/webapp/jsp/postulantes.jsp
+10
-1
No files found.
curriculumsearch/src/main/java/com/roshka/DTO/PostulanteListaDTO.java
View file @
fd8a70fe
...
@@ -3,6 +3,7 @@ package com.roshka.DTO;
...
@@ -3,6 +3,7 @@ package com.roshka.DTO;
import
java.util.List
;
import
java.util.List
;
import
com.roshka.modelo.Disponibilidad
;
import
com.roshka.modelo.Disponibilidad
;
import
com.roshka.modelo.EstadoPostulante
;
import
com.roshka.modelo.PostulanteTecnologia
;
import
com.roshka.modelo.PostulanteTecnologia
;
public
class
PostulanteListaDTO
{
public
class
PostulanteListaDTO
{
...
@@ -13,8 +14,9 @@ public class PostulanteListaDTO {
...
@@ -13,8 +14,9 @@ public class PostulanteListaDTO {
private
Long
nivelIngles
;
private
Long
nivelIngles
;
private
Long
experienciaMeses
;
private
Long
experienciaMeses
;
private
List
<
PostulanteTecnologia
>
tecnologias
;
private
List
<
PostulanteTecnologia
>
tecnologias
;
private
EstadoPostulante
estado
;
public
PostulanteListaDTO
(
Long
id
,
String
nombre
,
String
apellido
,
Disponibilidad
disponibilidad
,
public
PostulanteListaDTO
(
Long
id
,
String
nombre
,
String
apellido
,
Disponibilidad
disponibilidad
,
Long
nivelIngles
,
Long
experienciaMeses
,
List
<
PostulanteTecnologia
>
tecnologias
)
{
Long
nivelIngles
,
Long
experienciaMeses
,
List
<
PostulanteTecnologia
>
tecnologias
,
EstadoPostulante
estado
)
{
this
.
id
=
id
;
this
.
id
=
id
;
this
.
nombre
=
nombre
;
this
.
nombre
=
nombre
;
this
.
apellido
=
apellido
;
this
.
apellido
=
apellido
;
...
@@ -22,6 +24,7 @@ public class PostulanteListaDTO {
...
@@ -22,6 +24,7 @@ public class PostulanteListaDTO {
this
.
nivelIngles
=
nivelIngles
;
this
.
nivelIngles
=
nivelIngles
;
this
.
experienciaMeses
=
experienciaMeses
;
this
.
experienciaMeses
=
experienciaMeses
;
this
.
tecnologias
=
tecnologias
;
this
.
tecnologias
=
tecnologias
;
this
.
estado
=
estado
;
}
}
public
Long
getId
()
{
public
Long
getId
()
{
return
id
;
return
id
;
...
@@ -65,7 +68,12 @@ public class PostulanteListaDTO {
...
@@ -65,7 +68,12 @@ public class PostulanteListaDTO {
public
void
setTecnologias
(
List
<
PostulanteTecnologia
>
tecnologias
)
{
public
void
setTecnologias
(
List
<
PostulanteTecnologia
>
tecnologias
)
{
this
.
tecnologias
=
tecnologias
;
this
.
tecnologias
=
tecnologias
;
}
}
public
EstadoPostulante
getEstado
(){
return
estado
;
}
public
void
setEstado
(
EstadoPostulante
estado
){
this
.
estado
=
estado
;
}
}
}
curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java
View file @
fd8a70fe
...
@@ -14,6 +14,7 @@ import com.roshka.modelo.*;
...
@@ -14,6 +14,7 @@ import com.roshka.modelo.*;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.roshka.modelo.Disponibilidad
;
import
com.roshka.modelo.Disponibilidad
;
import
com.roshka.modelo.EstadoPostulante
;
import
com.roshka.modelo.EstadoCivil
;
import
com.roshka.modelo.EstadoCivil
;
import
com.roshka.modelo.Nacionalidad
;
import
com.roshka.modelo.Nacionalidad
;
import
com.roshka.modelo.Postulante
;
import
com.roshka.modelo.Postulante
;
...
@@ -42,6 +43,7 @@ import org.springframework.http.HttpStatus;
...
@@ -42,6 +43,7 @@ import org.springframework.http.HttpStatus;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.ui.Model
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.MethodArgumentNotValidException
;
import
org.springframework.web.bind.MethodArgumentNotValidException
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -90,6 +92,7 @@ public class PostulanteController {
...
@@ -90,6 +92,7 @@ public class PostulanteController {
public
String
postulantes
(
Model
model
,
public
String
postulantes
(
Model
model
,
@RequestParam
(
required
=
false
)
Long
tecId
,
@RequestParam
(
required
=
false
)
Long
tecId
,
@RequestParam
(
required
=
false
)
String
nombre
,
@RequestParam
(
required
=
false
)
String
nombre
,
@RequestParam
(
required
=
false
)
EstadoPostulante
estado
,
@RequestParam
(
required
=
false
)
Disponibilidad
dispo
,
@RequestParam
(
required
=
false
)
Disponibilidad
dispo
,
@RequestParam
(
required
=
false
)
Long
lvlEng
,
@RequestParam
(
required
=
false
)
Long
lvlEng
,
@RequestParam
(
required
=
false
)
Long
lvlTec
,
@RequestParam
(
required
=
false
)
Long
lvlTec
,
...
@@ -103,7 +106,8 @@ public class PostulanteController {
...
@@ -103,7 +106,8 @@ public class PostulanteController {
model
.
addAttribute
(
"tecnologias"
,
tecRepo
.
findAll
());
model
.
addAttribute
(
"tecnologias"
,
tecRepo
.
findAll
());
model
.
addAttribute
(
"disponibilidades"
,
Disponibilidad
.
values
());
model
.
addAttribute
(
"disponibilidades"
,
Disponibilidad
.
values
());
model
.
addAttribute
(
"institucionesEducativas"
,
institucionRepository
.
findAll
());
model
.
addAttribute
(
"institucionesEducativas"
,
institucionRepository
.
findAll
());
Page
<
Postulante
>
postulantesPag
=
post
.
postulantesMultiFiltro
(
nombre
==
null
||
nombre
.
trim
().
isEmpty
()
?
new
TypedParameterValue
(
StringType
.
INSTANCE
,
null
)
:
new
TypedParameterValue
(
StringType
.
INSTANCE
,
"%"
+
nombre
+
"%"
),
dispo
,
lvlEng
,
lvlTec
,
tecId
,
instId
,
cargoId
,
page
);
model
.
addAttribute
(
"estadoP"
,
EstadoPostulante
.
values
());
Page
<
Postulante
>
postulantesPag
=
post
.
postulantesMultiFiltro
(
nombre
==
null
||
nombre
.
trim
().
isEmpty
()
?
new
TypedParameterValue
(
StringType
.
INSTANCE
,
null
)
:
new
TypedParameterValue
(
StringType
.
INSTANCE
,
"%"
+
nombre
+
"%"
),
dispo
,
lvlEng
,
lvlTec
,
tecId
,
instId
,
cargoId
,
page
,
estado
);
List
<
Postulante
>
postulantes
=
postulantesPag
.
getContent
();
List
<
Postulante
>
postulantes
=
postulantesPag
.
getContent
();
List
<
PostulanteListaDTO
>
postulantesDTO
=
new
ArrayList
<>();
List
<
PostulanteListaDTO
>
postulantesDTO
=
new
ArrayList
<>();
...
@@ -115,7 +119,7 @@ public class PostulanteController {
...
@@ -115,7 +119,7 @@ public class PostulanteController {
expTotal
+=
Helper
.
getMonthsDifference
(
experiencia
.
getFechaDesde
(),
experiencia
.
getFechaHasta
());
expTotal
+=
Helper
.
getMonthsDifference
(
experiencia
.
getFechaDesde
(),
experiencia
.
getFechaHasta
());
}
}
if
(
expInMonths
!=
null
&&
expInMonths
>
expTotal
)
continue
;
if
(
expInMonths
!=
null
&&
expInMonths
>
expTotal
)
continue
;
postulantesDTO
.
add
(
new
PostulanteListaDTO
(
postulante
.
getId
(),
postulante
.
getNombre
(),
postulante
.
getApellido
(),
postulante
.
getDisponibilidad
(),
postulante
.
getNivelIngles
(),
expTotal
,
postulante
.
getTecnologias
()));
postulantesDTO
.
add
(
new
PostulanteListaDTO
(
postulante
.
getId
(),
postulante
.
getNombre
(),
postulante
.
getApellido
(),
postulante
.
getDisponibilidad
(),
postulante
.
getNivelIngles
(),
expTotal
,
postulante
.
getTecnologias
()
,
postulante
.
getEstadoPostulante
()
));
}
}
model
.
addAttribute
(
"pages"
,
postulantesPag
.
getTotalPages
());
model
.
addAttribute
(
"pages"
,
postulantesPag
.
getTotalPages
());
...
@@ -207,7 +211,19 @@ public class PostulanteController {
...
@@ -207,7 +211,19 @@ public class PostulanteController {
public
String
getPostulanteDetalle
(
Model
model
,
@PathVariable
(
"postulanteId"
)
Long
postulanteId
)
{
public
String
getPostulanteDetalle
(
Model
model
,
@PathVariable
(
"postulanteId"
)
Long
postulanteId
)
{
Postulante
p
=
post
.
findById
(
postulanteId
).
orElse
(
null
);
Postulante
p
=
post
.
findById
(
postulanteId
).
orElse
(
null
);
model
.
addAttribute
(
"postulante"
,
p
);
model
.
addAttribute
(
"postulante"
,
p
);
model
.
addAttribute
(
"estadoP"
,
EstadoPostulante
.
values
());
return
"detallepostulante"
;
return
"detallepostulante"
;
}
}
@PostMapping
({
"/postulante/{postulanteId}"
})
public
String
setPostulanteEstado
(
@ModelAttribute
Postulante
postulante
,
BindingResult
result
,
@PathVariable
(
"postulanteId"
)
Long
postulanteId
)
{
//post.setPostulanteEstadoAndComentario(postulante.getEstadoPostulante(),postulante.getComentarioRRHH(), postulante.getId());
Postulante
postulanteVd
=
post
.
getById
(
postulanteId
);
postulanteVd
.
setEstadoPostulante
(
postulante
.
getEstadoPostulante
());
postulanteVd
.
setComentarioRRHH
(
postulante
.
getComentarioRRHH
());
post
.
setPostulanteEstadoAndComentario
(
postulante
.
getEstadoPostulante
(),
postulante
.
getComentarioRRHH
(),
postulanteId
);
//post.save(postulanteVd);
return
"redirect:/postulante/"
+
postulanteId
;
}
}
}
\ No newline at end of file
curriculumsearch/src/main/java/com/roshka/modelo/EstadoPostulante.java
0 → 100644
View file @
fd8a70fe
package
com
.
roshka
.
modelo
;
public
enum
EstadoPostulante
{
NUEVO
(
"Nuevo"
),
CONTACTADO
(
"Contactado"
),
RECHAZADO
(
"Rechazado"
),
CONTRADADO
(
"Contradado"
),
VOLVERLLAMAR
(
"Volver a llamar"
);
private
final
String
estado
;
EstadoPostulante
(
String
estado
){
this
.
estado
=
estado
;
}
public
String
getEstado
(){
return
this
.
estado
;
}
}
curriculumsearch/src/main/java/com/roshka/modelo/EstadoPostulanteConverter.java
0 → 100644
View file @
fd8a70fe
package
com
.
roshka
.
modelo
;
import
java.util.Arrays
;
import
javax.persistence.AttributeConverter
;
import
javax.persistence.Converter
;
@Converter
(
autoApply
=
true
)
public
class
EstadoPostulanteConverter
implements
AttributeConverter
<
EstadoPostulante
,
String
>,
org
.
springframework
.
core
.
convert
.
converter
.
Converter
<
String
,
EstadoPostulante
>
{
@Override
public
String
convertToDatabaseColumn
(
EstadoPostulante
modalidad
)
{
if
(
modalidad
==
null
)
{
return
null
;
}
return
modalidad
.
getEstado
();
}
@Override
public
EstadoPostulante
convertToEntityAttribute
(
String
estado
)
{
if
(
estado
==
null
)
{
return
null
;
}
return
Arrays
.
stream
(
EstadoPostulante
.
values
())
.
filter
(
c
->
c
.
getEstado
().
equals
(
estado
))
.
findFirst
()
.
orElseThrow
(
IllegalArgumentException:
:
new
);
}
@Override
public
EstadoPostulante
convert
(
String
arg0
)
{
return
convertToEntityAttribute
(
arg0
);
}
}
curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java
View file @
fd8a70fe
...
@@ -73,6 +73,13 @@ public class Postulante {
...
@@ -73,6 +73,13 @@ public class Postulante {
@NotNull
@NotNull
private
EstadoCivil
estadoCivil
;
private
EstadoCivil
estadoCivil
;
@Column
(
name
=
"estado_postulante"
)
@NotNull
private
EstadoPostulante
estadoPostulante
=
EstadoPostulante
.
NUEVO
;
@Column
(
name
=
"comentario_rrhh"
)
private
String
comentarioRRHH
;
@Column
(
name
=
"nacionalidad"
,
length
=
2
)
@Column
(
name
=
"nacionalidad"
,
length
=
2
)
@NotNull
@NotNull
private
Nacionalidad
nacionalidad
;
private
Nacionalidad
nacionalidad
;
...
@@ -271,4 +278,17 @@ public class Postulante {
...
@@ -271,4 +278,17 @@ public class Postulante {
public
List
<
ReferenciaPersonal
>
getReferencias
()
{
public
List
<
ReferenciaPersonal
>
getReferencias
()
{
return
referencias
;
return
referencias
;
}
}
public
EstadoPostulante
getEstadoPostulante
()
{
return
this
.
estadoPostulante
;
}
public
void
setEstadoPostulante
(
EstadoPostulante
estadoPostulante
)
{
this
.
estadoPostulante
=
estadoPostulante
;
}
public
String
getComentarioRRHH
(){
return
comentarioRRHH
;
}
public
void
setComentarioRRHH
(
String
comentarioRRHH
){
this
.
comentarioRRHH
=
comentarioRRHH
;
}
}
}
curriculumsearch/src/main/java/com/roshka/repositorio/PostulanteRepository.java
View file @
fd8a70fe
...
@@ -2,13 +2,17 @@ package com.roshka.repositorio;
...
@@ -2,13 +2,17 @@ package com.roshka.repositorio;
import
java.util.List
;
import
java.util.List
;
import
javax.transaction.Transactional
;
import
org.hibernate.jpa.TypedParameterValue
;
import
org.hibernate.jpa.TypedParameterValue
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.jpa.repository.Query
;
import
com.roshka.modelo.Disponibilidad
;
import
com.roshka.modelo.Disponibilidad
;
import
com.roshka.modelo.EstadoPostulante
;
import
com.roshka.modelo.Postulante
;
import
com.roshka.modelo.Postulante
;
...
@@ -55,7 +59,23 @@ public interface PostulanteRepository extends JpaRepository<Postulante,Long> {
...
@@ -55,7 +59,23 @@ public interface PostulanteRepository extends JpaRepository<Postulante,Long> {
"and (pt.nivel >= ?4 or ?4 is null) "
+
"and (pt.nivel >= ?4 or ?4 is null) "
+
"and (pt.tecnologia.id = ?5 or ?5 is null) "
+
"and (pt.tecnologia.id = ?5 or ?5 is null) "
+
" and (e.institucion.id = ?6 or ?6 is null ) "
+
" and (e.institucion.id = ?6 or ?6 is null ) "
+
" and (conv.cargoId = ?7 or ?7 is null ) "
)
" and (conv.cargoId = ?7 or ?7 is null ) "
+
public
Page
<
Postulante
>
postulantesMultiFiltro
(
TypedParameterValue
nombre
,
Disponibilidad
disponibilidad
,
Long
nivelInges
,
Long
nivel
,
Long
tecnoId
,
Long
instId
,
Long
cargoId
,
Pageable
pageable
);
"and (p.estadoPostulante = ?8 or ?8 is null) "
)
public
Page
<
Postulante
>
postulantesMultiFiltro
(
TypedParameterValue
nombre
,
Disponibilidad
disponibilidad
,
Long
nivelInges
,
Long
nivel
,
Long
tecnoId
,
Long
instId
,
Long
cargoId
,
Pageable
pageable
,
EstadoPostulante
estado
);
@Transactional
@Modifying
@Query
(
"UPDATE Postulante p SET p.estadoPostulante = ?1 , p.comentarioRRHH = ?2 WHERE p.id = ?3"
)
void
setPostulanteEstadoAndComentario
(
EstadoPostulante
eP
,
String
comentario
,
Long
Id
);
/*@Transactional
@Modifying
@Query("UPDATE Postulante p SET p.estadoPostulante = ?1 WHERE p.id = ?2")
void setPostulanteEstadoPostulante(EstadoPostulante eP, Long Id);
@Transactional
@Modifying
@Query("UPDATE Postulante p SET p.comentarioRRHH = ?1 WHERE p.id = ?2")
void setPostulanteEstadoComentario( String comentario, Long Id);*/
}
}
curriculumsearch/src/main/webapp/jsp/detallepostulante.jsp
View file @
fd8a70fe
...
@@ -36,7 +36,8 @@
...
@@ -36,7 +36,8 @@
<label>
Estado civil: ${postulante.estadoCivil}
</label><br>
<label>
Estado civil: ${postulante.estadoCivil}
</label><br>
<label>
Nacionalidad: ${postulante.nacionalidad}
</label><br>
<label>
Nacionalidad: ${postulante.nacionalidad}
</label><br>
<label>
Disponibilidad: ${postulante.disponibilidad}
</label><br>
<label>
Disponibilidad: ${postulante.disponibilidad}
</label><br>
<label>
Estado del Postulante: ${postulante.estadoPostulante.getEstado()}
</label><br>
<label>
Comentario RRHH: ${postulante.getComentarioRRHH()}
</label><br>
<br><label>
TECNOLOGIAS
</label><br>
<br><label>
TECNOLOGIAS
</label><br>
<c:forEach
items=
"${postulante.tecnologias}"
var=
"detalle_tecnologia"
>
<c:forEach
items=
"${postulante.tecnologias}"
var=
"detalle_tecnologia"
>
<label>
Tecnologias: ${detalle_tecnologia.getTecnologia().getNombre()} -
</label>
<label>
Tecnologias: ${detalle_tecnologia.getTecnologia().getNombre()} -
</label>
...
@@ -83,6 +84,34 @@
...
@@ -83,6 +84,34 @@
</div>
</div>
<div
style=
"padding:10px ;margin: 5px;border: 3px solid black;"
>
<h2>
Cambiar Estado del Postulante y Comentario de RRHH
</h2>
<form:form
class=
"needs-validation"
method=
"post"
modelAttribute=
"postulante"
>
<form:label
path=
"estadoPostulante"
class=
"form-label"
>
Estado
</form:label>
<div
class=
"inputs"
>
<form:select
class=
"form-select"
path=
"estadoPostulante"
aria-label=
"Default select example"
>
<c:forEach
items=
"${estadoP}"
var=
"estadoPostulante"
>
<c:choose>
<c:when
test=
"${estadoPostulante.getEstado()=='Nuevo' }"
>
</c:when>
<c:otherwise>
<form:option
value=
"${estadoPostulante}"
>
${estadoPostulante.getEstado()}
</form:option>
</c:otherwise>
</c:choose>
</c:forEach>
</form:select>
</div>
<div
class=
"inputs"
>
<form:label
path=
"comentarioRRHH"
class=
"form-label"
>
ComentarioRRHH
</form:label>
<form:textarea
class=
"form-control"
path=
"comentarioRRHH"
id=
"comentarioRRHH"
></form:textarea>
</div>
<input
type=
"submit"
value=
"submit"
/>
</form:form>
</div>
</div>
</div>
</body>
</body>
...
...
curriculumsearch/src/main/webapp/jsp/postulantes.jsp
View file @
fd8a70fe
...
@@ -22,6 +22,13 @@
...
@@ -22,6 +22,13 @@
<input
type=
"text"
name=
"nombre"
id=
"nombre"
value=
"${param.nombre}"
>
<input
type=
"text"
name=
"nombre"
id=
"nombre"
value=
"${param.nombre}"
>
<button>
Buscar
</button>
<button>
Buscar
</button>
<br>
<br>
<label
for=
"estado"
>
Estado
</label>
<select
name=
"estado"
id=
"estado"
>
<option
value=
""
>
Seleccione una opcion
</option>
<c:forEach
items=
"${estadoP}"
var=
"estados"
>
<option
value=
"${estados}"
${
param
.
estado =
=
estados
?
"
selected
"
:
""}
>
${estados.getEstado()}
</option>
</c:forEach>
</select>
<label
for=
"dispo"
>
Disponbilidad
</label>
<label
for=
"dispo"
>
Disponbilidad
</label>
<select
name=
"dispo"
id=
"dispo"
>
<select
name=
"dispo"
id=
"dispo"
>
<option
value=
""
>
Seleccione una opcion
</option>
<option
value=
""
>
Seleccione una opcion
</option>
...
@@ -78,6 +85,7 @@
...
@@ -78,6 +85,7 @@
<th
scope=
"col"
>
Nivel de Ingles
</th>
<th
scope=
"col"
>
Nivel de Ingles
</th>
<th
scope=
"col"
>
Experiencia
</th>
<th
scope=
"col"
>
Experiencia
</th>
<th
scope=
"col"
>
Tecnologias
</th>
<th
scope=
"col"
>
Tecnologias
</th>
<th
scope=
"col"
>
Estado
</th>
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
...
@@ -87,12 +95,13 @@
...
@@ -87,12 +95,13 @@
<td>
${postulante.nombre} ${postulante.apellido}
</td>
<td>
${postulante.nombre} ${postulante.apellido}
</td>
<td>
${postulante.disponibilidad.getDescripcion()}
</td>
<td>
${postulante.disponibilidad.getDescripcion()}
</td>
<td>
${postulante.nivelIngles}
</td>
<td>
${postulante.nivelIngles}
</td>
<td>
${postulante.experienciaMeses}
</td>
<td>
${postulante.experienciaMeses}
<
op><
/td>
<td>
<td>
<c:forEach
items=
"${postulante.tecnologias}"
var=
"detalle_tecnologia"
varStatus=
"staTec"
>
<c:forEach
items=
"${postulante.tecnologias}"
var=
"detalle_tecnologia"
varStatus=
"staTec"
>
${detalle_tecnologia.getTecnologia().getNombre()}${not staTec.last ? "," : ""}
${detalle_tecnologia.getTecnologia().getNombre()}${not staTec.last ? "," : ""}
</c:forEach>
</c:forEach>
</td>
</td>
<td>
${postulante.estado.getEstado()}
</td>
<td><a
href=
"/postulante/${postulante.id}"
>
Ver
</a></td>
<td><a
href=
"/postulante/${postulante.id}"
>
Ver
</a></td>
</tr>
</tr>
</c:forEach>
</c:forEach>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment