JSF y Atributos Rendered

Uno de las características que nos pueden dar flexibilidad a la hora de trabajar con JSF es el uso de atributos rendered . Estos nos permiten mostrar o ocultar controles dependiendo del valor de una expresión de JSF Expression Languaje. Supongamos que tenemos un formulario sencillo en JSF que incluye un inputText con el precio del portatil que queremos comprar.

Vamos a ver el código del fichero JSF:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
</h:head>
<h:body>
<h:form>
<h:inputText value="#{beanPortatil.coste}"/>
<h:commandButton id="boton" value="aceptar"
action="destino.xhtml"/>
</h:form>
</h:body>
</html>

Una vez hemos construido el formulario vamos a mostrar el código del managedBean.


package com.arquitecturajava.bean;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class BeanPortatil {

private int coste;

public int getCoste() {
 return coste;
 }
 public void setCoste(int coste) {
 this.coste = coste;
 }

}

Por último tenemos que construir la página de destino en la cual dependiendo del precio del portatil nos avisará de si podemos comprarlo o no.

Vamos a ver el código fuente de esta página :

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>

</h:head>

<h:body>
<h:form>
El portatil cuesta :<h:outputText value="#{beanPortatil.coste}"/> Euros

<h:outputText value="Compratelo" rendered="#{beanPortatil.coste lt 1000}"/>
<h:outputText value="No te lo puedes comprar" rendered="#{beanPortatil.coste gt 1000}"/>
</h:form>
</h:body>
</html>
<pre>

Una vez construido el código invocamos al formulario y rellenamos el campo de coste.

y como resultado final obtendremos :

Hemos conseguido que aparezca este mensaje gracias a que las etiquetas outputText incluian los siguientes atributos rendered :

<h:outputText value="Compratelo" rendered="#{beanPortatil.coste lt 1000}"/>
<h:outputText value="No te lo puedes comprar" rendered="#{beanPortatil.coste gt 1000}"/>

Recordemos de JSF Expression Language que en la expresión #{beanPortatil.coste lt 1000} lt significa “less than” y que en la expresión “#{beanPortatil.coste gt 1000}”  gt significa “greater than”.

Related Post