JSF Lenguaje de Expresión y Objetos Implicitos
Lenguajes de Expresión (wikipedia)
El lenguaje de expresiones comenzó como una parte de la JavaServer Pages Standard Tag Library (JSTL) y fue llamado originalmente SPEL (Simplest Possible Expression Language), y después simplemente Expression Language (EL). Era un lenguaje de script que permitía el acceso a los componentes deJava(JavaBeans) a través de JSP. Desde JSP 2.0, se ha utilizado dentro de las etiquetas JSP para separar el código Java de JSP, y para permitir un acceso más fácil a los componentes de Java (que en código Java).Con los años, el lenguaje de expresiones ha evolucionado para incluir una funcionalidad más avanzada y fue incluido en la especificación JSP 2.0. El scripting se hizo más fácil para los diseñadores de contenido web que tienen poco o prácticamente ningún conocimiento del núcleo del lenguaje Java. Este lenguaje de script convirtió verdaderamente a JSP en un lenguaje de script. Antes de EL, JSP consistía en algunas etiquetas especiales como scriptlets, expresiones, etc. dentro de las cuales el código Java era escrito de forma explícita. Con EL el diseñador de contenido web sólo necesita saber cómo hacer las llamadas apropiadas a los métodos básicos de Java.EL era, tanto sintáctica como semánticamente, similar a las expresiones de JavaScript no hay conversión de tipos explícita
- las conversiones de tipos se hacen generalmente de forma implícita
- las comillas dobles y simples son equivalentes
objeto.propiedad
tiene el mismo significado queobjeto['propiedad']
objeto.propiedad
puede significar (dependiendo de qué objeto
se trata) o bien object.get("propiedad")
o object.getProperty("propiedad")
o object.getPropiedad()
, etc.Durante el desarrollo de JSP 2.0, la tecnología JavaServer Faces fue publicada, la cual también necesitaba un lenguaje de expresiones, pero el lenguaje de expresiones definido en la especificación JSP 2.0 no satisfacía todas las necesidades para el desarrollo con la tecnología JSF. La limitación más obvia es que sus expresiones son evaluadas de inmediato. Y también, los componentes de JSF necesitan una manera de invocar métodos de objetos del lado del servidor. Un lenguaje más poderoso fue creado con las siguientes nuevas características:
- Expresiones diferidas, que no se evalúan de inmediato
- Expresiones que pueden establecer (set), así como recuperar datos (get)
- Expresiones de métodos, que pueden invocar métodos
La versión 3.0 del lenguaje de expresiones (la palabra "unificado" ya no se consideró necesaria) se desarrolló en un JSR independiente de las especificaciones de JSP y JSF, en el JSR-341. Se agregaron algunas nuevas características, las más notables fueron los equivalentes en EL a los streams y expresiones lambda de Java 7.1El nuevo EL unificado es una unión de los lenguajes de expresiones de JSP y JSF. Además de las características ya disponibles en el EL de JSP, el EL unificado tiene las siguientes características:
- Evaluación diferida
- Soporte para expresiones que pueden establecer valores y expresiones que pueden invocar métodos
- Una API enchufable para resolver expresiones
Lista de Operadores de EL
Lista de Orden de Precedencia
Objetos Implicitos
Son nombres de variables que hacen referencia a Objetos de uso común como el HttpServletRequest en un request, los Parámetros de Request etc.Aquí está una lista de Objetos Implitos de JSF
<h:commandButton value="Ejecutar" action="#{formBean.save}" styleClass="btn btn-sm btn-primary">
<h:selectOneMenu value="#{formBean.form.formaPago}" converter="#{formBean.converter}" label="forma Pago"> <f:selectItem value="#{null}" itemLabel="-- Seleccione Forma de Pago --"></f:selectItem> <f:selectItems var="item" value="#{formBean.formaPagos}" itemLabel="#{item.label}" id="select_items"></f:selectItems> </h:selectOneMenu>
<h:outputText value="El Cliente es Premium" rendered="#{formBean.form.premium and !formBean.edit}" style="border:1px solid red;background:red;color:white"></h:outputText>
<h:outputText value="#{formBean.form.id mod 2 == 0?'Par':'Impar'}" rendered="#{!formBean.edit}"></h:outputText> <h:outputText value="El Pago Fue contado" rendered="#{!formBean.edit and formBean.form.formaPago.id==1}"></h:outputText> <h:outputText value="El Pago No fué Contado" rendered="#{!formBean.edit and formBean.form.formaPago.id ge 1}"></h:outputText>
<f:metadata> <f:viewParam name="id" value="#{formBean.id}"></f:viewParam> </f:metadata>
static String findNameById(Integer id) { if (id == null) return "completar el nombre"; if (id == 1) { return "Nery Patán"; } else if (id == 2) { return "Roberto Martínez'"; } else if (id == 3) { return "Michael Asturias"; } else if (id == 4) { return "Erick Ponce"; } else if (id == 5) { return "Javier Ralda"; } else { return "Federico Arriola"; } } public void setId(Integer id) { form.setId(id); form.setName(findNameById(id)); this.id = id; } public Integer getId() { return id; }
No hay comentarios:
Publicar un comentario