Как получить данные из Таблицы гибернации в моем случае? - PullRequest
0 голосов
/ 21 мая 2018

Я создаю веб-сайт, используя 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)

Что делать?и спасибо

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Установщики-геттеры используются только на стороне сервера для получения и установки значений.

Если вы хотите получить значения на странице просмотра (например, jsp), то вы можете получить прямой доступ с помощью оператора точки, поэтомув вашем случае это будет похоже на

${zebra.niveau2.annee.num}

ПРИМЕЧАНИЕ: В приведенном выше коде я предполагаю, что как niveau2, annee, num являются полями прямого свойства (String, int и т. д.), ноне объекты.Если это объекты, то вам нужно использовать цикл for.

0 голосов
/ 21 мая 2018

Вам нужно использовать имена свойств напрямую, а не методы получения, приведенный ниже код работает отлично:

<c:forEach items="${facilities}" var="facility">
                <tr>
                    <td>${facility.name}</td>
                    <td>${facility.code}</td>
                    <td>${facility.linkedInterface.name}</td>
                </tr>
            </c:forEach>

* РЕДАКТИРОВАТЬ *

Я не знаюЯ не верю, что ваш класс сущностей имеет какое-либо отношение к этой проблеме.Как вы предоставляете объект для модели?Пока у вас есть действительный объект / список, который вы предоставляете JSP, это должно работать.Все свойства моего класса сущностей являются частными, и это все еще работает, я думаю, что отражение используется для доступа к полям.Вот как работает мой контроллер для этой страницы:

@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";
}
...