Показать таблицу базы данных на jQuery datatable (Liferay) - PullRequest
0 голосов
/ 04 июля 2018

Следуя руководству Liferay по настройке гостевой книги и веб-портлета ввода, я в настоящее время могу отображать таблицу из базы данных, используя метод контейнера Liferay для заполнения результата. >> нравится << << 1002 *</p>

Это фрагмент кода контейнера:

<liferay-ui:search-container
    total="<%= GuestbookLocalServiceUtil.getGuestbooksCount(scopeGroupId) %>">
    <liferay-ui:search-container-results
        results="<%= GuestbookLocalServiceUtil.getGuestbooks(scopeGroupId, 
            searchContainer.getStart(), searchContainer.getEnd()) %>" />

    <liferay-ui:search-container-row
        className="com.liferay.docs.guestbook.model.Guestbook" modelVar="guestbook">

        <liferay-ui:search-container-column-text property="name" />

        <liferay-ui:search-container-column-jsp
            align="right" 
            path="/guestbookadminportlet/guestbook_actions.jsp" />

    </liferay-ui:search-container-row>

    <liferay-ui:search-iterator />
</liferay-ui:search-container>

Однако мне интересно отобразить результат в виде данных jQuery, и ниже я сделал следующее:

<script>
$(document).ready(function() {
    $('#gbdb').DataTable();
} );
</script>

<%
List<Guestbook> guestbookList = GuestbookLocalServiceUtil.getGuestbooks(scopeGroupId);
request.setAttribute("guestbookList", guestbookList);
%>

  <table id="gbdb" class="table table-bordered table-striped" style="width:100%">
    <thead>
      <tr>
       <th>Name</th>
       <th>Action</th>
      </tr>
    </thead>
    <tbody>

  <c:forEach items="${guestbookList}" var="guestbook">
       <tr>
       <td>${guestbook.name}</td>
       <td> <link href="/guestbookadminportlet/guestbook_actions.jsp" /></td>
       </tr>
    </c:forEach>         
    </tbody>
  </table>

Сейчас я могу получить запись из базы данных, но у меня вопрос: как мне заполнить кнопку guestbook_actions.jsp во втором столбце? исходному методу просто нужно указать путь к странице jsp. А также есть ли лучший или, желательно, более простой метод получения данных из базы данных и отображения их в виде данных?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Прежде всего вам нужно иметь объекты json для данных вашей базы данных

$sql = "select name,email from contact";

$res = mysqli_query($conn,$sql) or die(mysqli_error($conn));
$num = mysqli_num_rows($res);

$json = array();
if($num > 0)
{
    while ($obj=mysqli_fetch_object($res))
    {
        $json[] = $obj;
    }
}
echo json_encode($json)

Альтернативой является это или это для извлечения из базы данных

После этого вы можете использовать ajax для сопоставления их с функцией

0 голосов
/ 04 июля 2018

Таблицы данных являются лучшими с комбинацией фазы подачи ресурса

посмотрите здесь https://github.com/mir333/example/blob/master/SimpleShop/SimpleShopPortlet/src/main/java/eu/ibacz/example/simpleshop/portlet/catalog/CatalogPortlet.java

Затем вы можете просто передать JSON, который затем отображается в таблицах данных в соответствии с этим. https://datatables.net/manual/ajax

URL будет сгенерирован

<portlet:resourceURL var="queryURL" id="<%= RESOURCE_QUERY %>"/>

...