El uso de thymeleaf para mostrar un mensaje de error que altera la disposición de mi formulario de inicio de sesión

0

Pregunta

Estoy usando Thymeleaf para mostrar un mensaje de error en mi formulario de inicio de Sesión al ingresar mal credenciales:

<body>
  <div class="container">
    <form class="form" id="login" th:action="@{/login}" method="post">
      <h1 class="form__title">Login</h1>
      <div th:if="${param.error}" class="form__message form__message-error">
        invalid username or password
      </div>
  </div>
</body>

Desde este mensaje de error div sólo aparece al entrar mal credenciales, mi forma cambia su esquema de los campos de entrada están moviendo hacia abajo. Yo no quiero esto. Quiero que el formulario tenga el mismo aspecto en cualquier caso, sólo el mensaje debe recibir por escrito o eliminado. ¿Alguien sabe cómo conseguir esto?

authentication css html thymeleaf
2021-11-23 09:03:27
1

Mejor respuesta

0

th:if sólo añadir la <div> cuando el error parámetro de la petición está ahí. Para hacer lo que usted desea, usted debe utilizar CSS para tener un div vacío o mostrar algún texto, el uso de th:classappend para seleccionar la clase CSS a utilizar.

Algo así como:

<body>
  <div class="container">
    <form class="form" id="login" th:action="@{/login}" method="post">
      <h1 class="form__title">Login</h1>
      <div th:classappend="${param.error}?'show':'hide'" class="form__message form__message-error">
        invalid username or password
      </div>
  </div>
</body>

Con .show y .hide las clases definidas en el código CSS.

2021-11-23 15:11:56

esto parece ser lo que estoy buscando! ... cuando puedo agregar este bloque div aunque, estoy corriendo en un TemplateProcessingException: <div th:classappend="${param.error ? 'form--hidden' : 'form--shown'}" class="form__message form__message-error"> invalid username or password </div> ... y en mi archivo css form--hidden sólo dice: display: none y form-shown dice display:block
Luk

Hubo un error tipográfico, fijo ahora en mi respuesta. Debe ser ${param.error} ? 'form--hidden' : 'form--shown' en su caso.
Wim Deblauwe

ah, muchas gracias Wim! Ahora se está trabajando. Sólo, el formulario todavía cambia su tamaño. Pero supongo que es probable que tenga algo que ver con mi css. Es extraño, aunque yo estaba pensando en el div todavía estaba allí, incluso si la pantalla = ninguno.
Luk

Uso visibility:hidden en su lugar
Wim Deblauwe

perfecto, muchas gracias!
Luk

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................