Como usar a propriedade 'rendered' JSF

Boa tarde pessoal, é o seguinte estou criando uma página usando jsf, na qual contém um dataTable que exibe uma lista de contatos, e eu gostaria de colocar uma barra de pesquisa nesta página, o problema é que não faço a minima idéia de como ela funciona, então tive a idéia de criar algum if para listar todos os contatos apenas se o usuário não clicar no botão de busca, e caso ele clique no botão de busca aparecerá somente os contatos que possuem nome ou numero igual ao que ele digitou(ou seja a pagina teria 2 dataTables), então coloquei a propriedade ‘rendered’ com uma condição no qual diz que o dataTable que possui todos os contatos só será exibido caso o valor de uma váriavel no Bean seja maior que zero, setei a variavel com valor 1 mas não esta exibindo nada na página, talvez eu não esteja usando essa propriedade corretamente, alguém poderia me explicar como ela funciona? desde já agradeço :wink:

Meu DataTable
`<h:dataTable id=“items” value="#{ContatoBean.contatos2()}" var=“item” class=“table table-striped table-bordered” columnClasses=“column1,column2,column3,column4,column5” pagination=“true” rows=“8”>

			            <h:column>
							<f:facet name="header">
								<h:outputText value="Nome" />
							</f:facet>
							<h:outputText value="#{item.nome}"/>
			  			</h:column>
			            
			            <h:column  >
							<f:facet name="header">
								<h:outputText value="Numero" />
							</f:facet>
							<h:outputText value="#{item.numero}"/>
			  			</h:column>
			  	
			  			<h:column>
							<f:facet name="header">
								<h:outputText value="Nascimento" />
							</f:facet>
							<h:outputText value="#{item.dataNasc}"/>
			  			</h:column>
			  	
			  			<h:column  >
							<f:facet name="header">
								<h:outputText value="Sexo" />
							</f:facet>
							<h:outputText value="#{item.sexo}"/>
			  			</h:column>        
			             
			            <h:column class="actions columnsTable">
			            	
			            	<h:commandLink value="Visualizar" action="visualizarContato.xhtml" class="btn btn-success btn-xs">
	        					<f:setPropertyActionListener target="#{ContatoBean.contatoSelecionado}" value="#{item}"/>
	     					</h:commandLink>
			                
			                <h:commandLink value="Editar" action="editarContato.xhtml" class="btn btn-warning btn-xs">
	        					<f:setPropertyActionListener target="#{ContatoBean.contatoSelecionado}" value="#{item}"/>
	     					</h:commandLink>
	     					
	     					<h:commandLink value="Excluir" action="#{ContatoBean.deleteAction()}" class="btn btn-danger btn-xs">
	        					<f:setPropertyActionListener target="#{ContatoBean.contatoSelecionado}" value="#{item}"/>
	     					</h:commandLink>
			               
			                
			               
			            </h:column>       
			                         
			         </h:dataTable>`

Meu Bean com a váriavel setada

`
@ManagedBean(name=“ContatoBean”)
@SessionScoped
public class ContatoBean implements Serializable {

private static final long serialVersionUID = 1L;

private int pequisa = 1;

public ContatoBean() {
    }

}

você pode usar rendered para mostrar ou não mostrar a datable assim:

rendered="{!empty modelBean.lista}"

ou boolean

rendered="{modelBean.variavelBoolean}"

entre outras formas, voce pode usar um botao para setar true, false

obs: SessionScoped fica guardado na memória até o usuario fazer logoff, ou seja, tente evitar para coisas desnecessárias, utilize viewScoped

1 curtida

vlw, funcionou certinho :wink: