Setar propriedade do bean com objeto de um dataTable

3 respostas
P

Boa tarde,

Queridos, estou com uma dificuldade ao selecionar um item de uma tabela e setar uma propriedade do bean com o objeto selecionado.

Por exemplo, no código abaixo

<p:dataTable id="tblResumo" var="resumo"
				value="#{assistenteCredInstitucionalBean.resumoCota}"
				tableStyle="width:auto">

				<p:column headerText="Cod.">
					<h:outputText value="#{resumo.codigo}" />
				</p:column>

				<p:column headerText="Curso">
					<h:outputText value="#{resumo.curso.nome}" />
				</p:column>

				<p:column headerText="Disciplina">
					<h:outputText value="#{resumo.disciplina.nome}" />
				</p:column>

				<p:column headerText="Semestre">
					<h:outputText value="#{resumo.semestre.semestre}" />
				</p:column>

				<p:column headerText="Turno">
					<h:outputText value="#{resumo.turno.turno}" />
				</p:column>

				<p:column headerText="Crédito">
					<h:outputText value="#{resumo.credito}" />
				</p:column>

				<p:column style="width:10px">

					<p:commandButton id="selectButton" update="dlgAlunos"
						oncomplete="dlgAlunos.show();" icon="ui-icon-search" title="View">
						<f:setPropertyActionListener value="#{resumo}"
							target="#{assistenteCredInstitucionalBean.cotaSelecionada}" />
							<p:ajax listener="#{assistenteCredInstitucionalBean.carregarResumoExistente}"/>
					</p:commandButton>

				</p:column>

			</p:dataTable>

Por exemplo, entendo que o código do commandButton deveria pegar o objeto presente na linha da table e enviar para a propriedade cotaSelecionada do meu bean.

Veja o meu commandButton:

<p:commandButton id="selectButton" update="dlgAlunos" oncomplete="dlgAlunos.show();" icon="ui-icon-search" title="View"> <f:setPropertyActionListener value="#{resumo}" target="#{assistenteCredInstitucionalBean.cotaSelecionada}" /> <p:ajax listener="#{assistenteCredInstitucionalBean.carregarResumoExistente}"/> </p:commandButton>

O que posso estar fazendo errado?

Abraços

3 Respostas

D

Eu passo da seguinte forma:

<p:column style="width:25px;text-align:center">
      <f:facet name="header">
		<h:outputText value="#"/>
      </f:facet>
      <p:commandButton update="exercicio" ajax="false" oncomplete="janelaExercicio.hide()"
				 image="ui-icon-circle-check">
		 <f:setPropertyActionListener target="#{treinoBean.exercicioSelecionado}" value="#{exercicio}"/>
     </p:commandButton>
</p:column>

Bean:

public void setExercicioSelecionado(Exercicio exercicioSelecionado) {
	this.exercicioSelecionado = exercicioSelecionado;
	this.treinoDados.setExercicio(exercicioSelecionado);
}
D

provavelmente o método carregarResumoExistente() mostraria os dados do resumo em algum lugar né?
tente algo como:

<h:commandButton action="#{mb.carregarResumoExistente}">
  <f:setPropertyListener target="#{mb.cota}" value="#{resumo}" />
  <f:ajax render="ID_DO_COMPONENTE_QUE_MOSTRARA_OS_DADOS" />
</h:commandButton>
L

tente usar commandlink e remova esse [color=red]<f:ajax render=“ID_DO_COMPONENTE_QUE_MOSTRARA_OS_DADOS” />[/color]

tenta usar o rendered do commandLink tb pra ver se muda, no lugar de usar o render do ajax.

Criado 16 de fevereiro de 2012
Ultima resposta 17 de fev. de 2012
Respostas 3
Participantes 4