[DUVIDA] Retornar valor de dataTable(primeFaces) para um formulario JSF

2 respostas
G

Bom dia pessoal.
seguinte, estou desenvolvendo uma aplicação basica de controle de atendimentos.
tenho a página “novoatendimento.jsf” onde possui o formulario para que seja feita a entrada de dados. segue o formulario.

<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
</h:head>
<body>
<center><h:form>
		<h:inputText value="#{atendimentoBean.atendimento.idcliente}" />
	<h:inputText value="#{atendimentoBean.atendimento.idfuncionario}" />
	<p:panel header="Dados do Atendimento">
		<h:panelGrid columns="3">
			<h:outputText value="*Nome do Funcionário:" />
			<h:inputText size="40" maxlength="100"
				value="#{funcionarioBean.funcionario.nome}" />
			<a href="pesquisafuncionario.jsf"><img src="Imagens/lupa.png" /></a>			
			<h:outputText value="*Razão Social :" />
			<h:inputText size="40" maxlength="100"
				value="#{clienteBean.cliente.razaosocial}" />
			<a href="pesquisarcliente.jsf"><img src="Imagens/lupa.png" /></a>
			</h:panelGrid>
			</p:panel>
			<p:panel header="Detalhes do Atendimento" footer="*Campos Obrigatórios">
			<h:panelGrid columns="2">
			<h:outputText value="*Data de Início :" />
			<p:calendar pattern="dd/MM/yyyy" locale="PT_br" size="37"
				showOn="button" value="#{atendimentoBean.atendimento.datainicio}"/>
			<h:outputText value="*Data do Fim :" />
			<p:calendar pattern="dd/MM/yyyy" locale="PT_br" size="37"
				showOn="button" value="#{atendimentoBean.atendimento.datafim}" />
			<h:outputText value="*Atendimento Finalizado? :" />
			<h:selectOneMenu value="#{atendimentoBean.atendimento.finalizado}" required="true" requiredMessage="Campo obrigatorio">
				<f:selectItem itemValue=""/>
				<f:selectItem itemValue="Sim"/>
				<f:selectItem itemValue="Não"/>
			</h:selectOneMenu>
			<h:outputText value="*Observações :" />
			<h:inputTextarea value="#{atendimentoBean.atendimento.observacao}"  cols="40"/>			
		</h:panelGrid>
		<p:commandButton value="Gravar" action="#{atendimentoBean.inserir}"/>
		<p:commandButton type="reset" value="Limpar" />

	</p:panel>
	<p:themeSwitcher initialText="Escolha o tema aqui."
		buttonPreText="Aparência: " />
</h:form></center>
</body>
</html>

a ideia é a seguinte, o usuario ira clicar no botao de pesquisar que existe ao lado de cada campo relacionado a cliente e a funcionario para poder pesquisar ambos, ja fiz o datatable trazer os resultados, porém a duvida é a seguinte, como retornar o valor deste datatable para a pagina do formulario.

EX: Pesquisei um funcionario, no meu formulario preciso apenas do nome do funcionario e do id para completar a tabela com a chave estrangeira do mesmo, na minha datatable ele tras todos os dados do funcionario. ao clicar em retornar na minha pagina de pesquisa, a pagina do formulario recebe o nome e o id em seus respectivos lugares.
alguem poderia me dar uma força? lembrando que utilizei o datatable do prime faces

segue a minha datatable.

<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
</h:head>
<body>
<center><h:form>
	<p:dataTable var="func" value="#{funcionarioBean.lista()}" id="lista" selectionMode="single">
		<f:facet name="header">
           Funcionários
        </f:facet>
		<p:column>
			<f:facet name="header">
				<h:outputText value="Código" />	
				</f:facet>	
				<h:outputText value="#{func.id}" />		
		</p:column>
		<p:column>
			<f:facet name="header">
				<h:outputText value="Nome" />	
				</f:facet>	
				<h:outputText value="#{func.nome}" />		
		</p:column>
		<p:column>
			<f:facet name="header">
				<h:outputText value="E-Mail" />	
				</f:facet>	
				<h:outputText value="#{func.email}" />		
		</p:column>
		<p:column>
			<f:facet name="header">
				<h:outputText value="Data de Cadastro" />	
				</f:facet>	
				<h:outputText value="#{func.datacadastro}" />		
		</p:column>
		<p:column>
			<f:facet name="header">
				<h:outputText value="Telefone" />	
				</f:facet>	
				<h:outputText value="#{func.telefone}" />		
		</p:column>
		<f:facet name="footer">
				<p:commandButton value="Retornar" />	
		</f:facet>			
	</p:dataTable>
	<p:themeSwitcher initialText="Escolha o tema aqui."
		buttonPreText="Aparência: " />
</h:form></center>
</body>
</html>

2 Respostas

G

alguém?

D

Sei que a dúvida já ficou meio velhinha, mas…

No seu datatable você deve setar a propriedade selection com um atributo do seu bean

<p:dataTable var="func" value="#{funcionarioBean.lista()}" id="lista" selectionMode="single" selection="#{funcionarioBean.meuFuncionario}">

Quando submeter o formulario o atributo do seu bean será populado com o valor que você selecionou na datatable.

Criado 31 de dezembro de 2010
Ultima resposta 25 de jul. de 2011
Respostas 2
Participantes 2