Renderizar RichFaces DataTable

1 resposta
M

Pessoal, não sei se o problema está relacionado a lógica do Managed Bean ou a renderização do ajax. Ou, ainda, as 2 coisas.

Tenho um dataTable que traz todos os registros(até aí funciona), mas após digitar o nome em um inputText, quero que o dataTable traga apenas o registro pesquisado.

Seguem os meus métodos relacionados(não postei todos):

FuncionarioMB

private String nome;

private List<Funcionario> listFuncionario;

 

public List<Funcionario> getListFuncionario() {
		if (this.listFuncionario == null) {
			this.listFuncionario = new ArrayList<Funcionario>();
			this.listFuncionario = this.genericDAOFunc.ListAll();
		}

		return listFuncionario;
	}

	public void setListFuncionario(List<Funcionario> listFuncionarios) {
		this.listFuncionario = listFuncionarios;
	}

//Método que altera o listFuncionario para o dataTable exibir.

public void listaFuncionariosPesquisado() {
		List<Funcionario> funcionariosPesquisados = new ArrayList<Funcionario>();
		funcionariosPesquisados = genericDAOFunc.funcionarioPorNome(this
				.getNome());
		this.setListFuncionario(funcionariosPesquisados);

	}

O meu xhtml:

<f:view>

		<h:form>

			<rich:panel style="width:75%">

				<h:inputText value="#{funcionarioMB.nome}" id="nomePesq" />
				<rich:suggestionbox for="nomePesq"
					suggestionAction="#{funcionarioMB.listarNomesPesquisados}" var="_f">
					<h:column>
                  #{_f.nome}
                </h:column>

				</rich:suggestionbox>

				<a4j:commandButton value="Buscar"
					action="#{funcionarioMB.listaFuncionariosPesquisado}"
					reRender="_tabelaFunc">
				</a4j:commandButton>

				<rich:dataTable id="_tabelaFunc" width="100%"
					value="#{funcionarioMB.listFuncionario}" var="_func" rows="5"
					reRender="dataScroller" rendered="true" columnClasses="center"
					border="1">
					<f:facet name="header">
						<h:outputText value="Funcionarios " />
					</f:facet>

					<rich:column sortBy="#{_func.nome}">
						<f:facet name="header">
							<h:outputText value="Nome" />
						</f:facet>
						<h:outputText value="#{_func.nome}" />
					</rich:column>
					<rich:column sortBy="#{_func.email}">
						<f:facet name="header">
							<h:outputText value="Email" />
						</f:facet>
						<h:outputText value="#{_func.email}" />
					</rich:column>
					<rich:column sortBy="#{_func.dataNascimento}">
						<f:facet name="header">
							<h:outputText value="Data de Nascimento" />
						</f:facet>
						<h:outputText value="#{_func.dataNascimento}" />
					</rich:column>
					<rich:column>

					</rich:column>
					<f:facet name="footer">
						<rich:datascroller id="dataScroller" />
					</f:facet>
				</rich:dataTable>
			</rich:panel>

		</h:form>
	</f:view>


</ui:composition>
</html>

Os métodos DAO estão ok, pois fiz os testes unitários e o resultados vieram conforme o esperado.

Desde já, agradeço.

1 Resposta

M

Resolvi parcialmente o problema, coloquei o dataTable dentro de uma tag a4j:form e renderizo essa mesma tag.

Mas continuo sem entender o porquê, pois outros métodos(salvar, por exemplo) renderizavam a tabela sem a necessidade da tag a4j:form. :x

Por enquanto não vou alterar o título do tópico para resolvido até descobrir a resposta.

Criado 4 de julho de 2011
Ultima resposta 4 de jul. de 2011
Respostas 1
Participantes 1