Как отобразить свойство Entity в JSP - PullRequest
3 голосов
/ 06 августа 2011

Мне нужно отобразить результат запроса хранилища данных JSP.Я получаю данные и пересылаю их в файл JSP:

    Query query = new Query("oAuth", key);
    List<Entity> users = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));

    try {
        // Set the attribute and Forward to hello.jsp
        req.setAttribute ("users", users); // to save your temporary calculations. 
        req.getRequestDispatcher("/sharemarkerusers.jsp").forward(req, resp);
    } catch (Exception ex) {
        ex.printStackTrace ();
    }

Вот содержимое моего файла jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %> 

<html>
  <body>
    <table>
        <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.userEmail}</td>
            </tr>
        </c:forEach>
    </table>
  </body>
</html>

Но я получил результат: Не удалось найти свойство userEmail в классе com.google.appengine.api.datastore.Entity

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

<html>

  <body>

    <table>



            <tr>

                <td><Entity [oAuth("******")/oAuth("*********")]: 
    accessToken = *********** 
    accessTokenSecret = ************ 
    userEmail = usersemail@example.com 
> 
</td>

            </tr>



    </table>

  </body>

</html>

Итак, вопрос в том, как я могу получить доступ к свойствусущности через тег $ {user.?}?forEach зацикливается на этом.

Большое спасибо.

Ответы [ 3 ]

5 голосов
/ 28 мая 2013

Попробуйте с $ {user.properties.userEmail}

2 голосов
/ 06 августа 2011

Вы не можете.EL JSP используется для доступа к свойствам JavaBean.Это означает, что ${user.userEmail} ищет геттер getUserEmail() в атрибуте user.

Вам придется преобразовать свои сущности в JavaBeans или использовать пользовательские теги для доступа к свойствам сущностей.

Кроме того, нельзя использовать <c:out> или fn:escapeXml для отображения свойств, которые потенциальносодержат специальные символы HTML и / или отправляются конечными пользователями.В противном случае ваше приложение подвергается атакам XSS и потенциально может генерировать неработающий HTML.

1 голос
/ 03 января 2013

В случае, если кто-то еще ищет прямое решение (без преобразования сущностей, я имею в виду), см. Этот ответ

...