es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

FreeMarker toma la variable de una lista cuando está en un bucle que es seleccionado de una tabla.

Estoy tratando de obtener una variable department.id para el departamento seleccionado cuando se hace clic en el ancla de edición o eliminación. Intenté con <#assgn departmentId = "${department.id}">, pero eso devuelve el último id de la tabla. Como está en el bucle, también intenté con onclick="<#assgn departmentId = "${department.id}">", esto también me devuelve el último id. ¿Hay alguna forma de obtener el id actual del departamento cuando se hace clic en editar o eliminar con Apache FreeMarker?

HTML:

<tbody>
      <#assign count = 1>
      <#list departmentsList as department>
      <tr>
        <td>${count}</td>
        <td>${department.name}</td>
        <td class="text-right">
          <div class="dropdown dropdown-action">
            <a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="material-icons">more_vert</i></a>
              <div class="dropdown-menu dropdown-menu-right">
                  <a class="dropdown-item" href="#" data-toggle="modal" data-target="#edit_department"><i class="fa fa-pencil m-r-5"></i> Editar</a>
                  <a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_department"><i class="fa fa-trash-o m-r-5"></i> Eliminar</a>
            </div>
          </div>
        </td>
      </tr>
      <#assign count ++>
      </#list>
</tbody>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la variable department.id del departamento seleccionado cuando se hace clic en el enlace edit o delete en Apache FreeMarker, puedes utilizar el siguiente enfoque:

    1. Agrega un atributo de datos a los enlaces de edit y delete (por ejemplo, data-department-id=”${department.id}”):
    <a class="dropdown-item" href="#" data-toggle="modal" data-target="#edit_department" data-department-id="${department.id}"><i class="fa fa-pencil m-r-5"></i> Editar</a>
    
    <a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_department" data-department-id="${department.id}"><i class="fa fa-trash-o m-r-5"></i> Eliminar</a>
    
    1. Actualiza los modales de edit y delete para incluir un campo de entrada oculto para el id del departamento (por ejemplo, <input type="hidden" id="departmentId">).

    2. Utiliza JavaScript para actualizar el valor del campo de entrada oculto cuando se hace clic en el enlace de edit o delete:

    <script>
      $(document).ready(function() {
        $('.dropdown-item').click(function() {
          var departmentId = $(this).data('department-id');
          $('#departmentId').val(departmentId);
        });
      });
    </script>
    
    1. En el código Java, puedes recuperar el id del departamento del parámetro de solicitud en el método del controlador edit o delete:
    @RequestMapping(value = "/edit", method = RequestMethod.POST)
    public String editDepartment(@RequestParam("departmentId") int departmentId, Model model) {
      // Lógica de edición del departamento
    }
    
    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    public String deleteDepartment(@RequestParam("departmentId") int departmentId, Model model) {
      // Lógica de eliminación del departamento
    }
    

Comments are closed.