我正在使用Spring MVC
建立一个网站。
我有这些tables
:
zebra (idzebra,nom,snum,niveau2)
niveau2(idniveau2,nom,date,annee)
annee(idannee,num)
我想列出所有data binding
<td class="center">${zebra.getNiveau2().getAnnee().getNum() }</td>
<td class="center">${zebra.getNiveau2().getSemaine().getNum() }</td>
但它不起作用,我收到此错误
javax.el.MethodNotFoundException: Method not found: class org.hibernate.collection.PersistentBag.getAnnee()
javax.el.Util.findWrapper(Util.java:370)
javax.el.Util.findMethod(Util.java:216)
javax.el.BeanELResolver.invoke(BeanELResolver.java:149)
org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:147)
org.apache.el.parser.AstValue.getValue(AstValue.java:159)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)
org.apache.jsp.WEB_002dINF.views.semaine.semaine_jsp._jspx_meth_c_005fforEach_005f0(semaine_jsp.java:708)
org.apache.jsp.WEB_002dINF.views.semaine.semaine_jsp._jspService(semaine_jsp.java:394)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
怎么办?谢谢你
答案 0 :(得分:0)
您需要直接使用属性名称而不是getter方法,以下代码完美运行:
<c:forEach items="${facilities}" var="facility">
<tr>
<td>${facility.name}</td>
<td>${facility.code}</td>
<td>${facility.linkedInterface.name}</td>
</tr>
</c:forEach>
*编辑*
我不相信您的实体类与此问题有任何关系。你是如何为模型提供对象的?只要你有一个有效的对象/列表,你就可以提供给你的JSP了。我的实体班&#39;属性都是私有的,这仍然有效,我相信反射用于访问字段。这就是我的控制器对此页面的工作方式:
@RequestMapping(value = {"/list"}, method = RequestMethod.GET)
public String viewFacilities(ModelMap model)
{
List<Interface> interfaces = interfaceService.findAll();
model.addAttribute("interfaces", interfaces);
List<Facility> facilities = facilityService.findAll();
model.addAttribute("facilities", facilities);
setPermissions(model);
return "facilities";
}
答案 1 :(得分:0)
Getters setter仅在服务器端用于获取和设置值。
如果你想在你的视图页面中获取值(例如jsp),那么你可以直接使用点运算符访问,所以在你的情况下它会像
${zebra.niveau2.annee.num}
注意: 在上面的代码中,我假设像niveau2,annee,num是直接属性字段(String,int等),但不是对象。如果这些是对象,那么你需要使用for循环进行迭代。