How can I solve this problem in spring boot + bootstrap + jsp

1

Greetings I have the problem I am using spring boot and bootstrap v4 so I want to show a combination that shows me the data in a form but it does not show me I leave the corresponding code and also solve the error that I previously published in this community I also leave the link.   How can I solve this problem in Spring boot + JPA + Bootstrap + mysql .

In the controller:

@GetMapping("/lista")
public String direccionLista(Model model) {
    model.addAttribute("direcciones",direccionService.direccionLista());
    return "direccion/lista";

}


@PostMapping("/agregar")
@PreAuthorize("hasRole('admin')")
public String agregarDireccion(@ModelAttribute("direccion") Direccion direccion,Model model,BindingResult bindingResult)throws IOException {



    String mensaje="";
    if(direccion.getId()==null ){
        mensaje="agregado";
    } 
    if(bindingResult.hasErrors()){

    }

    else{
        mensaje="actualizado";
    }

    model.addAttribute("mensaje", direccionService.agregarDireccion(direccion).getUsuario().getUsuarioNombre()+"direccion"+mensaje+"direccion agregado...");
    return "redirect:/direccion/lista";

}

In the jsp:

<div class="container">
<br>
     <button  class="btn btn-primary nBtn" >Nuevo</button>
      <br>
      <br>
<div class="card">
<div class="card-block">

<table class="table table-hover table-bordered">
    <thead>
        <tr>
            <th>Codigo</th>
            <th>Ciudad</th>
            <th>Distrito</th>
            <th>Pais</th>
            <th>Usuario</th>
            <th>Actualizar</th>
            <th>Eliminar</th>   
        </tr>

    </thead>
    <tbody>
        <c:forEach items="${direcciones}" var="direccion">
            <tr>
                <td>${direccion.id}</td>
                <td>${direccion.ciudad}</td>
                <td>${direccion.distrito}</td>
                <td>${direccion.pais}</td>
                <td>${direccion.usuario.usuarioNombre}</td>
                <td><a href="${path}/direccion/actualizar/${direccion.id}" class="btn btn-primary eBtn">Actualizar</a></td>
                <td><a href="${path}/direccion/eliminar/${direccion.id}"  class="btn btn-danger">Eliminar</a></td>
            </tr>

        </c:forEach>

    </tbody>



</table>
</div>
</div>

<form:form  action="${path}/direccion/lista" method="post"  modelAttribute="direcciones" >

<div class="modal fade" id="exampleModal" 
    tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">

      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Actualizar o Guardar</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
                      <div class="form-group">
                <label for="id" class="col-form-label">Codigo:</label>
                <input type="text" class="form-control" id="id" name="id" value=""/>
              </div>

              <div class="form-group">
                <label for="pais" class="col-form-label">Pais:</label>
                <input type="text" class="form-control" id="pais" name="pais" value=""/>
              </div>
              <div class="form-group">
                <label for="ciudad" class="col-form-label">Ciudad:</label>
                <input type="text" class="form-control" id="ciudad" name="ciudad"  value=""/>
              </div>
               <div class="form-group">
                <label for="distrito" class="col-form-label">Distrito:</label>
                <input type="text" class="form-control" id="distrito" name="distrito" value=""/>
              </div>

               <div class="form-group">
                   <label for="usuario" class="col-form-label">Usuario:</label>

                    <select name="usuario.id" id="usuario">
                        <c:forEach items="${usuarios}" var="usuario" >
                            <option value="${usuario.id}">${usuario.usuarioNombre}</option>
                        </c:forEach>
                    </select>   
                </div>



         </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
            <input type="submit" class="btn btn-primary" value="guardar"/>
          </div>
    </div>

      </div>

    </div>
    </form:form>
  </div>    

In the main1 script:

$(document).ready(function(){

$('.nBtn, .table .eBtn').on('click',function(event){

    event.preventDefault();
    var href=$(this).attr('href');
    var text=$(this).text();

    if(text=='Actualizar' && document.getElementById("usuario").value != "none"){ 
         var usuario = document.getElementById('usuario').value;

    $.get(href,function(direccion,usuario,status){
        $('.myForm #id').val(direccion.id);
        $('.myForm #ciudad').val(direccion.ciudad);
        $('.myForm #distrito').val(direccion.distrito);
        $('.myForm #pais').val(direccion.ciudad);
        $('.myForm #usuario').val(usuario.nombre);
    });

    $('.myForm #exampleModal').modal();

}else{

    $('.myForm #id').val('');
    $('.myForm #ciudad').val('');
    $('.myForm #distrito').val('');
    $('.myForm #pais').val('');
    $('.myForm #usuario').val('');

    $('.myForm #exampleModal').modal();
}

});
});

    
asked by Libra2880 10.07.2018 в 13:28
source

2 answers

1

The problem is that at no time have you added the list of users to the model, you have two methods that call

model.addAttribute("<clave>", valor);

But in neither case the key is "usuarios" , therefore there is no such list that you try to go through in your loop.

    
answered by 10.07.2018 в 16:48
0

I had to change the following code lines in the controller:

@GetMapping("/lista")
public String direccionLista(Model model) {
    model.addAttribute("direcciones",direccionService.direccionLista());
    model.addAttribute("usuarios",usuarioService.usuarioLista());
    return "direccion/lista";

}

    
answered by 12.07.2018 в 00:35