Olá,
Estou usando uma biblioteca chamada "DataTables" que é uma biblioteca que permite adicionar recursos de interatividade e manipulação de elementos de tabelas no HTML.
Entretanto, mesmo seguindo a documentação e tentando personalizar a atualização dos atributos, porém a listagem da API que possui 20 elementos só aparece 10 e não mostra a páginação no canto inferior.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!--jQuery-->
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<!-- DATA TABLES -->
<script src="https://cdn.datatables.net/1.13.7/js/jquery.dataTables.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<!--Deixar em portugues o datatables-->
<script src="./pt-BR.json"></script>
</head>
<body>
<div id="content"></div>
<table id="dataTable" class="table table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Item</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody id="tableBody">
<!-- Os itens da tabela serão adicionados dinamicamente aqui pelo JavaScript -->
</tbody>
</table>
</div>
<script>
let qtdElementosPorPagina;
let paginaAtual;
let testeNovo;
$(document).ready(function() {
let teste = null;
$('#dataTable').DataTable({
serverSide: true,
ajax: {
url: 'http://localhost:8080/lista',
type: 'GET',
dataType: 'json',
data: function (d) {
// Adicione as variáveis customizadas aos parâmetros da solicitação
d.start = 0;
d.length = qtdElementosPorPagina;
d.start = paginaAtual;
d.page = paginaAtual; // Corrigido para 'page'
console.log(d);
teste = d;
// Retorne os parâmetros modificados
return d;
},
dataSrc: function(json) {
// Este bloco de código é executado após a conclusão bem-sucedida da solicitação Ajax
console.log("Dados de sucesso:", json);
testeNovo = json;
qtdElementosPorPagina = json.pageable.pageSize;
paginaAtual = json.pageable.pageNumber;
return json.content; // Retorna a propriedade 'content' como fonte de dados
},
error: function (xhr, textStatus, error) {
// Lide com erros, se necessário
console.error("Erro na requisição Ajax:", textStatus, error);
}
},
columns: [
{ data: 'id' },
{ data: 'item' },
{ data: 'description' }
],
paging: true,
language: {
url: "./pt-BR.json"
}
});
});
</script>
</body>
</html>
mostrando o seguinte texto:
Mostrando 0 até 0 de 0 registro(s) (Filtrados de NaN registros) Anterior12345…NaNPróximo
O json é este:
{"content":[{"id":1,"item":"item 1","description":"describe 1"},{"id":2,"item":"item 2","description":"describe 2"},{"id":3,"item":"item 3","description":"describe 3"},{"id":4,"item":"item 4","description":"describe 4"},{"id":5,"item":"item 5","description":"describe 5"},{"id":6,"item":"item 6","description":"describe 6"},{"id":7,"item":"item 7","description":"describe 7"},{"id":8,"item":"item 8","description":"describe 8"},{"id":9,"item":"item 9","description":"describe 9"},{"id":10,"item":"item 10","description":"describe 10"}],"pageable":{"sort":{"empty":true,"sorted":false,"unsorted":true},"offset":0,"pageNumber":0,"pageSize":10,"paged":true,"unpaged":false},"totalPages":2,"totalElements":20,"last":false,"size":10,"number":0,"sort":{"empty":true,"sorted":false,"unsorted":true},"numberOfElements":10,"first":true,"empty":false}
Pelo endpoint:
Fonte:
- Link de chamada ajax para carregar a tabela* https://datatables.net/examples/ajax/custom_data_property.html ;
- JSON do pt-br: * https://github.com/DataTables/Plugins/blob/master/i18n/pt-BR.json