2016-08-17 4 views
-1

Получение исключения с последующим кодом. JSTL показывает 500 с не найденным свойством (например, id).Spring JSP получение javax.el.PropertyNotFoundException

JSP

<c:forEach var="movie" items="${movies}>"> 
    <tr> 
     <td><input type="checkbox" name="foo"/></td> 
     <td>${movie.id}</td> 
     <%--<td>${movie.year}</td>--%> 
     <%--<td>${movie.quality}</td>--%> 
     <%--<td>${movie.size}</td>--%> 
     <%--<td>${movie.created}</td>--%> 
     <%--<td>${movie.seed}</td>--%> 
     <%--<td>${movie.peer}</td>--%> 
     <td></td> 
    </tr> 
</c:forEach> 

Контроллер

@RequestMapping(value = "/moderator/upload", method = RequestMethod.GET) 
public ModelAndView showUploadPage() { 

    ModelAndView uploadPage = new ModelAndView("upload"); 
    Movie movie = new Movie("Terminator 2", 200, "HD", 20, 24233523, 1991, "now"); 
    List<Movie> movies = new ArrayList<>(); 
    movies.add(movie); 
    uploadPage.addObject("movies", movies); 
    movies.forEach(item -> LOGGER.info(item.toString())); 
    return uploadPage; 
} 

Есть следующий вывод в консоли (SLF4J):

Movie{created='now', id=0, name='Terminator 2', year=1991, quality='HD', size=24233523, seed=20, peer=200} 

геттеры и сеттеры в классе сущностей

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(nullable = false) 
public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

@Column(nullable = false) 
public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

Entity

@Entity 
@Table 
public class Movie implements Serializable, Torrent { 

private int id; 
private String name; 
private int year; 
private String quality; 
private long size; 
private String created; 
private int seed; 
private int peer; 

public Movie() { 
} 

public Movie(String name, int peer, String quality, int seed, long size, int year, String created) { 
    this.name = name; 
    this.peer = peer; 
    this.quality = quality; 
    this.seed = seed; 
    this.size = size; 
    this.year = year; 
    this.created = created; 
} 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(nullable = false) 
public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

@Column(nullable = false) 
public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

@Column(nullable = false) 
public String getQuality() { 
    return quality; 
} 

public void setQuality(String quality) { 
    this.quality = quality; 
} 

@Column(nullable = false) 
public long getSize() { 
    return size; 
} 

public void setSize(long size) { 
    this.size = size; 
} 

@Column(nullable = false) 
public String getCreated() { 
    return created; 
} 

public void setCreated(String created) { 
    this.created = created; 
} 

@Column(nullable = false) 
public int getPeer() { 
    return peer; 
} 

public void setPeer(int peer) { 
    this.peer = peer; 
} 


@Column(nullable = false) 
public int getSeed() { 
    return seed; 
} 

public void setSeed(int seed) { 
    this.seed = seed; 
} 

@Column(nullable = false) 
public int getYear() { 
    return year; 
} 

public void setYear(int year) { 
    this.year = year; 
} 


@Override 
public boolean equals(Object o) { 
    if (this == o) return true; 
    if (o == null || getClass() != o.getClass()) return false; 

    Movie movie = (Movie) o; 

    if (id != movie.id) return false; 
    if (year != movie.year) return false; 
    if (size != movie.size) return false; 
    if (seed != movie.seed) return false; 
    if (peer != movie.peer) return false; 
    if (!name.equals(movie.name)) return false; 
    if (!quality.equals(movie.quality)) return false; 
    return created.equals(movie.created); 

} 

@Override 
public int hashCode() { 
    int result = id; 
    result = 31 * result + name.hashCode(); 
    result = 31 * result + year; 
    result = 31 * result + quality.hashCode(); 
    result = 31 * result + (int) (size^(size >>> 32)); 
    result = 31 * result + created.hashCode(); 
    result = 31 * result + seed; 
    result = 31 * result + peer; 
    return result; 
} 

@Override 
public String toString() { 
    return "Movie{" + 
      "created='" + created + '\'' + 
      ", id=" + id + 
      ", name='" + name + '\'' + 
      ", year=" + year + 
      ", quality='" + quality + '\'' + 
      ", size=" + size + 
      ", seed=" + seed + 
      ", peer=" + peer + 
      '}'; 
} 

}

StackTrace

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/upload.jsp at line 77 

74:         <c:forEach var="movie" items="${movies}>"> 
75:          <tr> 
76:           <td><input type="checkbox" name="foo"/></td> 
77:           <td>${movie.id}</td> 
78:           <%--<td>${movie.year}</td>--%> 
79:           <%--<td>${movie.quality}</td>--%> 
80:           <%--<td>${movie.size}</td>--%> 


Stacktrace: 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1243) 
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    com.svitsky.filter.CharsetFilter.doFilter(CharsetFilter.java:27) 
    com.svitsky.filter.ModeratorFilter.doFilter(ModeratorFilter.java:38) 
root cause 

javax.el.PropertyNotFoundException: Property 'id' not found on type java.lang.String 
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268) 
    javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:221) 
    javax.el.BeanELResolver.property(BeanELResolver.java:355) 
    javax.el.BeanELResolver.getValue(BeanELResolver.java:95) 
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110) 
    org.apache.el.parser.AstValue.getValue(AstValue.java:169) 
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) 
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:943) 
    org.apache.jsp.WEB_002dINF.views.upload_jsp._jspx_meth_c_005fforEach_005f0(upload_jsp.java:315) 
    org.apache.jsp.WEB_002dINF.views.upload_jsp._jspService(upload_jsp.java:205) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1243) 
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    com.svitsky.filter.CharsetFilter.doFilter(CharsetFilter.java:27) 
    com.svitsky.filter.ModeratorFilter.doFilter(ModeratorFilter.java:38) 
+0

показать полный объект Кино и исключение – Jens

ответ

0

Ваш код ОК для этой строки, за исключением:

<c:forEach var="movie" items="${movies}>"> 

Это вызывает проблемы, она должна быть

<c:forEach var="movie" items="${movies}"> 

ошибка опечатка, я думаю.

+0

Да, спасибо. Провел все это время на этом :) –

+0

Не стоит беспокоиться. Иногда бывает :) –

 Смежные вопросы

  • Нет связанных вопросов^_^