CommandButton do primefaces nao funciona

12 respostas
igor_ks

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

Hebert_Coelho

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.

igor_ks

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]
Hebert_Coelho

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

Coloque alguma coisa aí.

igor_ks

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 =/

Hebert_Coelho

Mas esse fc é de qual componente?

F

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

igor_ks

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

Hebert_Coelho

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?

igor_ks

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

Hebert_Coelho

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.

igor_ks

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…

igor_ks

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