当它显示它抛出的表时,我不知道我做错了什么 那个例外,似乎问题是'nombreEvento' 变量,但我检查了注释和atributte,两者都是 右
jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="ISO-8859-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 3, from LayoutIt!</title>
<meta name="description" content="Source code generated using layoutit.com">
<meta name="author" content="LayoutIt!">
<link href="./css/bootstrap.min.css" rel="stylesheet">
<link href="./css/style.css" rel="stylesheet">
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
</button> <a class="navbar-brand" href="#">AndalusiPark Eventos</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active">
<a href="<c:url value="/app/formularioUsuario.jsp"/>">Registrarte</a>
</li>
<li>
<a href="#">Link</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown<strong class="caret"></strong></a>
<ul class="dropdown-menu">
<li>
<a href="#">Action</a>
</li>
<li>
<a href="#">Another action</a>
</li>
<li>
<a href="#">Something else here</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Separated link</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">One more separated link</a>
</li>
</ul>
</li>
</ul>
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control">
</div>
<button type="submit" class="btn btn-default">
Submit
</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">Link</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown<strong class="caret"></strong></a>
<ul class="dropdown-menu">
<li>
<a href="#">Action</a>
</li>
<li>
<a href="#">Another action</a>
</li>
<li>
<a href="#">Something else here</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Separated link</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
<h3>
Bienvenid@ al servicio exclusivo de creación de eventos del hotel AndalusiPark
</h3>
<c:if test="${not empty eventos }">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>
#
</th>
<th>
Título evento
</th>
<th>
Tipo
</th>
<th>
Fecha de celebración
</th>
<th>
Precio en €
</th>
</tr>
</thead>
<tbody>
<c:forEach items="eventos" var="e">
<tr>
<td>
1
</td>
<td>
${e.nombreEvento }
</td>
<td>
${e.tipoEvento }
</td>
<td>
${e.fechaCelebracion }
</td>
<td>
${e.precioEvento }
</td>
<td>
<a href="#" class="btn btn-info"> <span class="glyphicon glyphicon-info-sign"></span></a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</c:if>
</div>
</div>
</div>
<script src="./js/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/scripts.js"></script>
</body>
</html>
pojo类
@Entity
@Table(name = "eventos")
public class Evento {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idEvento")
private long idEvento;
@Column(name = "nombreEvento")
private String nombreEvento;
@Column(name = "tipoEvento")
private String tipoEvento;
@Column(name = "descripcionEvento")
private String descripcionEvento;
@Column(name = "precioEvento")
private double precioEvento;
@Column(name = "fechaCreacion")
private Date fechaCreacion;
@Column(name = "fechaCelebracion")
@Type(type="date")
private Date fechaCelebracion;
// Los días que faltan para que se cumpla el evento
@Column(name = "diasRestantes")
private long diasRestantes;
@Column(name = "iva")
private double iva;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name = "usuario_id")
private Usuario usuario;
@OneToMany(mappedBy = "primaryKey.evento",fetch=FetchType.EAGER)
@Cascade(CascadeType.ALL)
@ElementCollection(targetClass=Integer.class)
private Collection<Asiste> listadoAsistentes;
public Evento() {
super();
}
public Evento(long idEvento, String nombreEvento, String tipoEvento, String descripcionEvento, double precioEvento,
Date fechaCreacion, Date fechaCelebracion, long diasRestantes, double iva, Usuario usuario,
Collection<Asiste> listadoAsistentes) {
super();
this.idEvento = idEvento;
this.nombreEvento = nombreEvento;
this.tipoEvento = tipoEvento;
this.descripcionEvento = descripcionEvento;
this.precioEvento = precioEvento;
this.fechaCreacion = fechaCreacion;
this.fechaCelebracion = fechaCelebracion;
this.diasRestantes = diasRestantes;
this.iva = iva;
this.usuario = usuario;
this.listadoAsistentes = listadoAsistentes;
}
public Evento(String nombreEvento, String tipoEvento, String descripcionEvento, double precioEvento,
Date fechaCreacion, Date fechaCelebracion, long diasRestantes, double iva, Usuario usuario,
Collection<Asiste> listadoAsistentes) {
super();
this.nombreEvento = nombreEvento;
this.tipoEvento = tipoEvento;
this.descripcionEvento = descripcionEvento;
this.precioEvento = precioEvento;
this.fechaCreacion = fechaCreacion;
this.fechaCelebracion = fechaCelebracion;
this.diasRestantes = diasRestantes;
this.iva = iva;
this.usuario = usuario;
this.listadoAsistentes = listadoAsistentes;
}
public long getIdEvento() {
return idEvento;
}
public void setIdEvento(long idEvento) {
this.idEvento = idEvento;
}
public String getNombreEvento() {
return nombreEvento;
}
public void setNombreEvento(String nombreEvento) {
this.nombreEvento = nombreEvento;
}
public String getTipoEvento() {
return tipoEvento;
}
public void setTipoEvento(String tipoEvento) {
this.tipoEvento = tipoEvento;
}
public String getDescripcionEvento() {
return descripcionEvento;
}
public void setDescripcionEvento(String descripcionEvento) {
this.descripcionEvento = descripcionEvento;
}
public double getPrecioEvento() {
return precioEvento;
}
public void setPrecioEvento(double precioEvento) {
this.precioEvento = precioEvento;
}
public Date getFechaCreacion() {
return fechaCreacion;
}
public void setFechaCreacion(Date fechaCreacion) {
this.fechaCreacion = fechaCreacion;
}
public Date getFechaCelebracion() {
return fechaCelebracion;
}
public void setFechaCelebracion(Date fechaCelebracion) {
this.fechaCelebracion = fechaCelebracion;
}
public long getDiasRestantes() {
return diasRestantes;
}
public void setDiasRestantes(long diasRestantes) {
this.diasRestantes = diasRestantes;
}
public double getIva() {
return iva;
}
public void setIva(double iva) {
this.iva = iva;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Collection<Asiste> getListadoAsistentes() {
return listadoAsistentes;
}
public void setListadoAsistentes(Collection<Asiste> listadoAsistentes) {
this.listadoAsistentes = listadoAsistentes;
}
@Override
public String toString() {
return "Evento [idEvento=" + idEvento + ", nombreEvento=" + nombreEvento + ", tipoEvento=" + tipoEvento
+ ", descripcionEvento=" + descripcionEvento + ", precioEvento=" + precioEvento + ", fechaCreacion="
+ fechaCreacion + ", fechaCelebracion=" + fechaCelebracion + ", diasRestantes=" + diasRestantes
+ ", iva=" + iva + ", usuario=" + usuario + ", listadoAsistentes=" + listadoAsistentes + "]";
}
// Métodos propios
public double calcularIva() {
return (precioEvento * (iva / 100)) + precioEvento;
}
}
Servlet
@WebServlet("/TablaInicioServlet")
public class TablaInicioServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TablaInicioServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at:
// ").append(request.getContextPath());
GestionEventos gestionEventos = new GestionEventos();
Collection<Evento> listaEventos = gestionEventos.list();
// Entiendo que el atributo "eventos es para conectar con el html"
request.setAttribute("eventos", listaEventos);
request.getRequestDispatcher("tabla.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Stacktrace:] con causa raíz
javax.el.PropertyNotFoundException: Propiedad 'nombreEvento' no hallada en el tipo java.lang.String
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:229)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:206)
at javax.el.BeanELResolver.property(BeanELResolver.java:317)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
at org.apache.jsp.tabla_jsp._jspx_meth_c_005fforEach_005f0(tabla_jsp.java:301)
at org.apache.jsp.tabla_jsp._jspx_meth_c_005fif_005f0(tabla_jsp.java:258)
at org.apache.jsp.tabla_jsp._jspService(tabla_jsp.java:177)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
at com.andalusipark.servlet.evento.RegistroEventoServlet.doPost(RegistroEventoServlet.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)