Click de botao em column de p:datatable

5 respostas
PePeLeGaL

boa noite meu povo,

estou ficando louco. nao entendi o porque, mas quando clico no botao indicar fora da datatable no codigo abaixo, o botao aciona o metodo incrementar. entretanto, se eu clicar no botao dentro da column da datatable, ele nao funciona de forma alguma. Alguem poderia me dar uma luz, por favor?

<h:form id="form1">

				<fieldset>

					<legend>Informe o nome de uma empresa</legend>

					<h:panelGrid id="panelGrid" columns="4">

						<p:inputText value="#{indicarEmpresaMB.nomeEmpresa}"
							required="true"
							requiredMessage="Voce deve informar o nome da empresa."
							id="inputField" />

						<p:commandButton value="Buscar"
							actionListener="#{indicarEmpresaMB.buscarPeloNome}"
							update="panelGrid, dataTableEmpresas" id="p1" />
						<p:commandButton value="Novo"
							actionListener="#{indicarEmpresaMB.novo}"
							update="panelGrid, dataTableEmpresas" id="p2" />

						<p />

							<p:commandButton value="#{bundle.indicar}" icon="ui-icon-plus"
								actionListener="#{indicarEmpresaMB.incrementar}" >

							</p:commandButton>

					</h:panelGrid>

				</fieldset>




				<p:dataTable var="empresa" value="#{indicarEmpresaMB.empresas}"
					paginator="true" rows="10"
					emptyMessage="Nenhuma empresa foi encontrada."
					paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
					border="1" id="dataTableEmpresas">

					<p:column>
						<f:facet name="header">Nome da Empresa</f:facet>
						<h:outputText value="#{empresa.nome}"></h:outputText>
					</p:column>

					<p:column>
						<f:facet name="header">Numero de Indicacoes</f:facet>
						<h:outputText value="#{empresa.quantidadeIndicacoes}" id="txt"></h:outputText>
					</p:column>

					<p:column>
						<f:facet name="header">Indicar</f:facet>

						<h:panelGrid id="panelGrid2" columns="1">
							<p:commandButton value="#{bundle.indicar}" icon="ui-icon-plus"
								actionListener="#{indicarEmpresaMB.incrementar}" update="panelGrid2">

							</p:commandButton>

						</h:panelGrid>

					</p:column>


				</p:dataTable>


			</h:form>

5 Respostas

PePeLeGaL

cheguei até a adicionar o panelgrid dentro da column para ver se tinha relacao. entretanto, nao adiantou.

A

Ele deve tá processando todo seu form, e você tem um inputText required, e deve tá exibindo a mensagem de que o campo é obrigatório (caso você tenha colocado um messages na página, se não tem ele na tela o erro acontece mas tá silenciado).
Coloca o process no botão:

<p:commandButton value="#{bundle.indicar}" icon="ui-icon-plus"  process="@this"
                                actionListener="#{indicarEmpresaMB.incrementar}" update="panelGrid2">  
    </p:commandButton>
PePeLeGaL

ayslanms,

tentei da forma que voce sugeriu mas nao funcionou.

G
<h:panelGrid id="panelGrid2" columns="1">
     <p:commandButton value="#{bundle.indicar}" icon="ui-icon-plus"  actionListener="#{indicarEmpresaMB.incrementar}" update="panelGrid2"/> 
</h:panelGrid>

Altera este seu código acima por este que esta abaixo:

<p:commandButton value="#{bundle.indicar}" icon="ui-icon-plus"  actionListener="#{indicarEmpresaMB.incrementar}" immediate="true" process="@this" />

A propriedade immediate é pra não fazer nenhuma validação ao chamar seu método.
Já a propriedade process é para você submeter apenas o valor do botão.

[]'s

PePeLeGaL

nao adiantou.

Criado 9 de outubro de 2012
Ultima resposta 12 de out. de 2012
Respostas 5
Participantes 3