tutorial tag lib formulario agregar java jsp java-ee jstl el

java - tag - Diferencia exacta y relación entre JSTL y Expression Language



tag lib jstl (2)

Después de leer las preguntas y respuestas ¿Cómo evitar el código de Java en los archivos JSP? Dejé de codificar con scriptlets.

Entonces comencé a leer JSTL y tuve la duda de que encontré que JSTL tiene una relación con EL .

Pero no estoy obteniendo la relación exacta entre ellos.

Aquí obtuve el código de aquí

<c:set var="test" value="JSTL Core Tags"></c:set> <c:out value="${test}"></c:out>

Sé que <c:set es una etiqueta JSP y ${test} es el lenguaje de Expresión ...

Mis confusiones son

  1. ¿No funcionará solo con JSTL ? ¿Siempre necesita el apoyo de EL ? Si no siempre es necesario, ¿cómo en el caso anterior?

  2. ¿Cómo simplemente usar el lenguaje de Expresión sin etiquetas JSTL?


El EL, inicialmente, ha sido diseñado para ser utilizado dentro de los atributos de las etiquetas JSTL, y cualquier otra etiqueta personalizada que desee usar o escribir usted mismo.

Una versión posterior de la especificación JSP ha permitido usar el EL directamente dentro de los JSP, pero esto no significa que el JSTL ya no sea útil. Lo único que puede hacer con EL directamente en el JSP es escribir algún valor a la respuesta, como por ejemplo

${user.id}

que escribiría la ID del bean de usuario. Si desea realizar pruebas, bucles, escapes de HTML, URL, fechar un formato numérico, etc., aún necesita usar el JSTL.


Expression Language (EL) es una forma de crear una expresión en los objetos Java, de la forma abc (que es equivalente a a.getB (). GetC (), o a.getB().isC() , etc. , es una forma de crear una expresión legible de Java. Un caso de uso común, en JSP, puede escribir: ${user.name} que escribirá el Object / String devuelto por el usuario de bean, utilizando el usuario equivalente de Java. user.getName() .

JSTL es la biblioteca de etiquetas. Tales como <c:if> <c:set> etc.

Usar JSTL y EL juntos Puede usar JSTL y EL juntos, como por ejemplo:

<c:if test="${user.active}"> Your account is active. </c:if> <c:if test="${not user.active}"> Your account is NOT active. </c:if>

Aquí la parte c:if es JSTL y la parte user.active es EL.