как распечатать список и другие типы данных в jsp - PullRequest
0 голосов
/ 10 марта 2020

я пытаюсь получить данные из базы данных весной mvc, это мой код для извлечения данных

@Override
public List getOrderDetail(Integer shop_id) {
    // TODO Auto-generated method stub
    SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(
            "SELECT order_id,shop_id,delivery_address,total_amount FROM master_order WHERE shop_id =" + shop_id);

    SQLQuery query1 = sessionFactory.getCurrentSession().createSQLQuery(
            "SELECT itm.image,itm.name,itm.brand,odr.quantity,itm.offerprice,(itm.offerprice*odr.quantity) AS Total,modr.cust_id FROM master_order modr\r\n"
                    + "INNER JOIN tblorder odr ON modr.order_id = odr.order_id INNER JOIN item itm on odr.item_id = itm.item_id WHERE modr.shop_id ="+shop_id);

    query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
    query1.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

    List results = query.list();
    List results1 = query1.list();

    results.add(results1);

    System.out.println(results);

    return results;
}

выше System.out.println(results); оператор дает следующий вывод

[{shop_id=1, delivery_address=1, abc, xyz, aaa, USA, order_id=6, total_amount=1800}, [{image=Screenshot (19).png, quantity=8, Total=800, name=DhruvRajkotiya, offerprice=100, brand=gsgsrgs, cust_id=2}, {image=Screenshot (19).png, quantity=10, Total=1000, name=qwe, offerprice=100, brand=asdf, cust_id=2}, {image=Screenshot (19).png, quantity=1, Total=100, name=ewq, offerprice=100, brand=gsgsrgs, cust_id=2}]]

Я хочу напечатать order_id, а также {image = Screenshot (19) .png, количество = 10, Total = 1000, name = qwe, offerprice = 100, бренд = asdf, cust_id = 2} в jsp page

это мой код контроллера

@RequestMapping(value = "/notifications", method = RequestMethod.GET)
public String notifications(Model model, HttpServletRequest request) {
    if (request.getSession().getAttribute("shopkeeper") == null) {
        return "redirect:login";

    } else {
        Shopkeeper sp = (Shopkeeper) request.getSession().getAttribute("shopkeeper");
        model.addAttribute("order", shopkeeperService_shopkeeper.getOrderDetail(sp.getSk_id()));
        return "shopkeeper/notifications";
    }
}

это мой jsp код

<div class="row">
                    <c:forEach items="${ order}" var="order">
                        <div class="col-lg-12">
                        <div class="card">
                            <div class="card-header" style="padding-bottom: 5px;">
                                <h6># ${order.shop_id }</h6>
                            </div>
                            <div class="card-body">
                                <div class="col-lg-2" style="float: left;">Image</div>
                                <div class="col-lg-2" style="float: left;">Product name</div>
                                <div class="col-lg-2" style="float: left;">Product brand
                                </div>
                                <div class="col-lg-1" style="float: left;">Quantity</div>
                                <div class="col-lg-1" style="float: left;">Unit Price</div>
                                <div class="col-lg-1" style="float: left;">Total</div>
                                <div class="col-lg-3" style="float: left;">Approve of
                                    request</div>
                            </div>
                            <div class="card-body">
                                <div class="col-lg-6" style="float: left;">Delivery
                                    Address</div>
                                <div class="col-lg-6" style="float: left;">Total Amount</div>
                            </div>
                        </div>
                    </div>
                    </c:forEach>
                </div>

я хочу напечатать here is the design i want to create

моя концепция вопроса - это order_id, address, total_amount один раз и несколько купленных предметов, которые могут быть одним или несколькими

как я могу напечатать

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Способ "отправить" некоторые данные на страницу JSP - установить и передать атрибут запроса (или сеанса).

Из сервлета, который обрабатывает текущий запрос, в doGet () или метод doPost () (в зависимости от используемого метода HTTP-запроса) вы можете сделать:

request.setAttribute("attributeName", attributeObject);
request.getRequestDispatcher("<name_of_your_page>.jsp").forward(request, response);

, где attributeName - строка, которая будет рассматриваться как ссылка на attributeObject в JSP page.

Затем на странице JSP вы можете использовать библиотеку JSTL и язык выражений (см. это руководство относительно JSTL и это относительно JSP & EL в целом). Чтобы перебрать список, который был передан как атрибут запроса, используйте тег <c:forEach> из JSTL.

Прежде всего вам необходимо импортировать основные теги JSTL, поместив эту строку в верхней части вашего JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Еще одно полезное утверждение, которое следует указать под последним:

<%@ page isELIgnored="false" %>

, которое указывает вашему веб-браузеру на оценку выражения, написанные на EL вместо включения их в тело HTML в виде простого текста.

При условии, что вы использовали строку "orders", чтобы назвать набор, заданный как атрибут, использование тега <c:forEach> может выглядеть так же, как показано ниже. Возможно, вы захотите структурировать его по-разному, и имена полей (например, order.order_id) могут отличаться в вашем случае, но я думаю, что вы можете понять эту идею.

<c:forEach item="order" items="${requestScope.orders}">
    <p>${order.order_id}</p>
    <p>${order.delivery_address}</p>
    ...
</c:forEach>
0 голосов
/ 10 марта 2020

Вы можете сохранить список как атрибут модели. Например, вы хотите сохранить текущего пользователя:

model.addAttribute("user",user);

и получить доступ к этому атрибуту в вашем файле jsp внутри div. Возможно:

<div> ${user.name} </div> 

Метод контроллера может выглядеть следующим образом :

@RequestMapping( value = "/user", method = RequestMethod.GET )
public String displayUser(final Model model)
{
   final User user = userService.findUserById(1); // here you'll provide custom implementation
   model.addAttribute("user",user);
   return "somejsppage.jsp";
}

Если вы хотите добавить список в вашу модель:

 final List<User> users = fillUserList(); // your implementation here
 model.addAttribute("users",users);

Вы можете получить доступ к каждому элементу в этом списке через тег <c:forEach>:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
   <body>
      <table>
         <tr>
            <th>First Name</th>
         </tr>
         <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.firstName}</td>
            </tr>
         </c:forEach>
      </table>
   </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...