CommandButton do primefaces nao funciona

12 respostas
I

Olá, bom dia a todos

minha action do commandButton nao funciona.
Sim, já dei uma pesquisada no forum, e com ajax=“false” ele funciona, mas o problema é que preciso do dialog, e dialog pelo que percebi só aceita com ajax

ou seja, ou o botao funciona, ou uso o dialog :shock:

com o dialog e sem ajax=“false” o dialog abre, mas o bota nao faz nada :?

Codigo do botao:

<fc:commandButton id="idcontacbtnDel" backingBean="#{contaUI}" 
									    action="deleteConta" value=""
										image="#{messages['global.operations.delete.icon']}"
										title="#{messages['global.operations.delete']}" 
										securityKey="EMPRESA" securityAction="R"
										update="dialogs" immediate="true" oncomplete="deleteDialog.show()">
										 
										<f:setPropertyActionListener value="#{dataTableItem}"
											target="#{backingBean.bean}" />
										<f:setPropertyActionListener target="#{contaUI.retorno}"
	                                        value="#{empresaUI.retorno}" />
	                                    <f:setPropertyActionListener target="#{contaUI.empresa}"
	                                        value="#{empresaUI.bean}" />	
									</fc:commandButton>

Codigo do dialog

<p:dialog id="idcontaDeleteDialog"
				header="#{messages['global.msg.confirmar_exclusao']}"
				widgetVar="deleteDialog" resizable="false" modal="true">
				<h:form id="deleteDialogForm">
					<fieldset>
						<p:commandButton value="#{messages['global.yes']}"
							action="deleteConta" immediate="true" 
							update="@form msg" oncomplete="#deleteDialog.hide()"
							id="deleteDialog_btnYes" backingBean="#{contaUI}">
						</p:commandButton>

						<p:commandButton value="#{messages['global.no']}"
							onclick="deleteDialog.hide()" id="deleteDialog_btnNo" />
					</fieldset>
				</h:form>
			</p:dialog>

12 Respostas

H

Mas a action do seu botão está apontando para “deleteConta”, ou seja, apontando para uma página ou mapeamento do JSF.

Tenta com ajax=true e sem o action.

I

jakefrog Obrigado pela resposta rapida.

Mas nao sei pq qdo deixo ajax=“true” ele da erro, nem consegue carregar a pagina

2011-12-26 11:23:37,859 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-127.0.0.1-8080-1) Error Rendering View[/empresa/empresa.xhtml]: java.lang.IllegalArgumentException: ""
	at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:574) [:2.0.3-]
	at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:233) [:]
	at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:205) [:]
	at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:77) [:]
	at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:55) [:]
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879) [:2.0.3-]
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:308) [:2.0.3-]
	at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:101) [:2.0.3-]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) [:2.0.3-]
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularCell(DataTableRenderer.java:567) [:]
	at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:527) [:]
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:468) [:]
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:194) [:]
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:173) [:]
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:79) [:]
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650) [:2.0.3-]
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:164) [:2.0.3-]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643) [:2.0.3-]
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:164) [:2.0.3-]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) [:2.0.3-]
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:300) [:2.0.3-]
	at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:101) [:2.0.3-]
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) [:2.0.3-]
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) [:2.0.3-]
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389) [:2.0.3-]
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127) [:2.0.3-]
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:269) [:2.0.3-]
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:269) [:2.0.3-]
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117) [:2.0.3-]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) [:2.0.3-]
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) [:2.0.3-]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) [:2.0.3-]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
	at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
	at java.lang.Thread.run(Thread.java:619) [:1.6.0_11]
H

java.lang.IllegalArgumentException: “”
Pode ser pq o value está = “”.

Coloque alguma coisa aí.

I

realmente nao sei o que é… mesmo com um value ele da este erro…
tá tenso… fazer um simples botao no grid de deletar, com um dialog =/

H

Mas esse fc é de qual componente?

F

Cara pelo que eu percebi seu erro é pq o sem o dialog ele fico fora do form…

I

fc:commandButton é uma taglib propria que tem apenas um commandButton e um outputext do prime

<p:commandButton id="#{id}"
action="#{backingBean[action]}"
value="#{fc:nvl(value, ‘’)}"
title="#{title}"
image="#{image}"
immediate="#{fc:nvl(immediate, false )}"
rendered="#{fc:nvl(rendered, true) and (!identity.loggedIn() or identity.hasPermission(securityKey,securityAction)) }"
update="#{update}"
process="#{process}"
oncomplete="#{oncomplete}"
onclick="#{onclick}"
style="#{style}"
styleClass="#{styleClass}"
disabled="#{disabled}"
ajax="#{fc:nvl(ajax, true)}"
type="#{fc:nvl(type, submit)}">

<ui:insert/>
    
 </p:commandButton>

 <h:outputText id="#{id}_ajax" value="#{fc:nvl(ajax, 'true') and ( identity == null or identity.hasPermission(securityKey,'C') ) }" style="display: none;"/>

Mesmo dentro do form nao deu certo…
to achando que é bug do prime, o botao so funciona com ajax=false, mas sem o ajax nao consigo usar o dialog

H

Pq o bug seria do primefaces sendo que o botão é de uma outra biblioteca?

Será que não tem nenhum outro valor sendo passado como “” nesse monte de parâmetro do botão?

I

olha só

o dialog dexei do jeito que tava e fiz alteracoes pra usar direto o botao do primefaces

<p:commandButton id="idcontacbtnDel" backingBean="#{contaUI}" 
									    value="#{contaUI.retorno}" ajax="true"
										image="#{messages['global.operations.delete.icon']}"
										title="#{messages['global.operations.delete']}" 
										securityKey="EMPRESA" securityAction="R"
										update="dialogs" immediate="true" oncomplete="deleteDialog.show()">
										 
										<f:setPropertyActionListener value="#{dataTableItem}"
											target="#{backingBean.bean}" />
										<f:setPropertyActionListener target="#{contaUI.retorno}"
	                                        value="#{empresaUI.retorno}" />
	                                    <f:setPropertyActionListener target="#{contaUI.empresa}"
	                                        value="#{empresaUI.bean}" />	
									</p:commandButton>

agora ele aparece o dialog, mas nao chama a action

H

Eu não estou com o primefaces aqui mas me responde aí.

Ele tem esses atributos? securityKey, backingBean, securityAction

Vc não colocou a action a ser executada aí no botão.

I

humm verdade, esses atributos era do componente proprios, entao nao vou poder usar os componentes do prime, pois preciso desse controle de seguranca adicionada na taglib

mas vou tentar agora fazendo essas alteracoes só pra ver qq vai dar…

I

Com ajax=false , ele exclui, mas sem aparecer o dialog

<p:commandButton id="idcontacbtnDel"
										value="#{contaUI.retorno}" ajax="false"
										image="#{messages['global.operations.delete.icon']}"
										title="#{messages['global.operations.delete']}"
										update="dialogs"
										immediate="true" oncomplete="deleteDialog.show()"
										action="#{contaUI.deleteConta}">

com o ajax=“true”
ele aparece o dialog, ele da um erro de javascript quando clica no sim

segundo o console de erros do firefox

nao sei mais o que fazer, se tiver cansado de ajudar, pode deixar :stuck_out_tongue:

Criado 26 de dezembro de 2011
Ultima resposta 26 de dez. de 2011
Respostas 12
Participantes 3