JSF - ui: tag param

Usando ui: tag param , podemos passar parâmetros para o arquivo de modelo ou um arquivo incluído.

No capítulo JSF - tags de modelo , aprendemos como criar e usar tags de modelo. Definimos várias seções, como cabeçalho, rodapé, conteúdo e um modelo combinando todas as seções.

Agora vamos aprender -

  • Como passar parâmetro (s) para várias seções de um modelo

  • Como passar parâmetro (s) para um modelo

Parâmetro para seção de um modelo

Parâmetro de criação: common.xhtml

Adicionar parâmetro a ui: incluir tag. Usarui:param tag para definir um parâmetro contendo um valor a ser passado para a seção Header.

<ui:insert name = "header" >
   <ui:include src = "/templates/header.xhtml" >
      <ui:param name = "defaultHeader" value = "Default Header" />
   </ui:include>
</ui:insert>

Use o parâmetro: header.xhtml

<ui:composition> 		
   <h1>#{defaultHeader}</h1>
</ui:composition>

Parâmetro para modelo

Parâmetro de criação: home.xhtml

Adicione o parâmetro à tag ui: composition. Usarui:param tag para definir um parâmetro contendo um valor a ser passado para o modelo.

<ui:composition template = "templates/common.xhtml">	
   <ui:param name = "title" value = "Home" />
</ui:composition>

Use o parâmetro: common.xhtml

<h:body> 
   <h2>#{title}</h2>
</h:body>

Aplicação de exemplo

Vamos criar um aplicativo JSF de teste para testar as tags de modelo no JSF.

Degrau Descrição
1 Crie um projeto com o nome helloworld sob um pacote com.tutorialspoint.test conforme explicado no capítulo JSF - Tag de modelos .
2 Modificar header.xhtml e common.xhtml arquivos sob src → principal → webapp → modelos pasta. Modifique-os conforme explicado abaixo.
3 Modifique home.xhtml conforme explicado abaixo. Mantenha o resto dos arquivos inalterados.
4 Compile e execute o aplicativo para ter certeza de que a lógica de negócios está funcionando de acordo com os requisitos.
5 Por fim, construa o aplicativo na forma de um arquivo war e implante-o no Apache Tomcat Webserver.
6 Inicie seu aplicativo da web usando o URL apropriado, conforme explicado a seguir na última etapa.

header.xhtml

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml"   
   xmlns:ui = "http://java.sun.com/jsf/facelets">
   
   <body>
      <ui:composition> 
         <h1>#{defaultHeader}</h1>
      </ui:composition>	
   </body>
</html>

common.xhtml

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml"   
   xmlns:h = "http://java.sun.com/jsf/html"
   xmlns:ui = "http://java.sun.com/jsf/facelets"> 
   
   <h:head></h:head>
   <h:body>
      <h2>#{title}</h2>
      
      <div style = "border-width:2px; border-color:green; border-style:solid;">
         <ui:insert name = "header" >
            <ui:include src = "/templates/header.xhtml" >
               <ui:param name = "defaultHeader" value = "Default Header" />
            </ui:include>
         </ui:insert> 
      </div>
      <br/>
      
      <div style = "border-width:2px; border-color:black; border-style:solid;">
         <ui:insert name = "content" >
            <ui:include src = "/templates/contents.xhtml" />
         </ui:insert>    
      </div>
      <br/>
      
      <div style = "border-width:2px; border-color:red; border-style:solid;">
         <ui:insert name = "footer" >
            <ui:include src = "/templates/footer.xhtml" />
         </ui:insert>
      </div>
   
   </h:body>
</html>

home.xhtml

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml"   
   xmlns:h = "http://java.sun.com/jsf/html"
   xmlns:ui = "http://java.sun.com/jsf/facelets">
   
   <h:body>
      <ui:composition template = "templates/common.xhtml">
         <ui:param name = "title" value = "Home" />
         
         <ui:define name = "content">				
            <br/><br/>
             <h:link value = "Page 1" outcome = "page1" />
             <h:link value = "Page 2" outcome = "page2" />			
            <br/><br/>
         </ui:define>
      </ui:composition>
   </h:body>
</html>

Assim que você estiver pronto com todas as mudanças feitas, vamos compilar e rodar a aplicação como fizemos no capítulo JSF - Primeira Aplicação. Se tudo estiver bem com sua aplicação, isso produzirá o seguinte resultado.