boa noite! estou com dificuldade de fazer funcionar o <f:ajax> em um commandLink que tenho no meu form.
<h:dataTable id="tableV" value="#{projectBean.showValuesAdd()}" var="value">
<f:facet name="header" >Values </f:facet>
<h:column>
<fieldset><legend>#{value.idOctopus.varOctopus}</legend>
#{value.alternative}
<h:commandLink value="X"
action="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" ></h:commandLink>
</fieldset>
</h:column>
</h:dataTable>
estre trecho do codigo exibe a minha lista e em cada elemento tenho um commandlink pra deletar o elemento, assim com esta exclui certinho, porem queria usar o ajax pra nao precisar recarregar a pagina.
Tentei assim, mas nao rolou, ele excluir mas nao atualiza o datatable:
<h:commandLink value="X" >
<f:ajax event="click" listener="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" render="tableV"/>
</h:commandLink>
alguem tem alguma ideia do que pode ser!
cara…
ta usando prime 2.0?
ele tem ajax nativo…
pq não usa??
veja no showcase do primefaces >)
[quote=d34d_d3v1l]cara…
ta usando prime 2.0?
ele tem ajax nativo…
pq não usa??
veja no showcase do primefaces >)[/quote]
dae d34d_d3v1l, sim eu vi (e testei) o prime mas realmente os meu valores estao sendo excluidos porem so atualizam depois de um F5. tanto com h:commandlink ou p:commandlink.
coloca o dataTable dentro de um h:panelgroup e atualiza o panelGroup não o dataTable
tambem já tinha visto essa situação, a questao eh que tenho uma combo que renderiza esse datatable.
<div>
<f:ajax event="change" listener="#{projectBean.addValuesOctopusToList()}" render="tableV">
<h:selectOneMenu id="vos" value="#{projectBean.valuesOctopusId}" >
<f:selectItem itemValue="" itemLabel="Select" />
<f:selectItems value="#{projectBean.listValueOctopus()}"
var="o"
itemValue="#{o.value}"
itemLabel="#{o.label}">
</f:selectItems>
</h:selectOneMenu>
</f:ajax>
</div>
<div>
<h:dataTable id="tableV" value="#{projectBean.showValuesAdd()}" var="value" >
<f:facet name="header" >Values </f:facet>
<h:column>
<fieldset><legend>#{value.idOctopus.varOctopus}</legend>
#{value.alternative}
<f:ajax event="action" render="tableV" >
<h:commandLink action="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" value="X">
</h:commandLink>
</f:ajax>
</fieldset>
</h:column>
</h:dataTable>
</div>
o seu selectOneMenu funciona? ele atualiza o dataTable?é só mandar ele atualizar o panelgroup…
alterei o seu commandlink
[code]
<f:ajax event=“change” listener="#{projectBean.addValuesOctopusToList()}" render=“panel”>
<h:selectOneMenu id=“vos” value="#{projectBean.valuesOctopusId}" > …
<h:panelGroup id=“panel”>
<h:dataTable id=“tableV” value="#{projectBean.showValuesAdd()}" var=“value” >
<f:facet name=“header” >Values </f:facet>
<h:column>
#{value.idOctopus.varOctopus}
#{value.alternative}
<h:commandLink action="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" value="X">
<f:ajax render=“panel” />
</h:commandLink>
</fieldset>
</h:column>
</h:dataTable></h:panelGroup> [/code]
só outra pergunta… existe o event=“action” no f:ajax? nunca usei…
tenta alguma coisa assim…
[quote=alves.Felipe]o seu selectOneMenu funciona? ele atualiza o dataTable?é só mandar ele atualizar o panelgroup…
alterei o seu commandlink
[code]
<f:ajax event=“change” listener="#{projectBean.addValuesOctopusToList()}" render=“panel”>
<h:selectOneMenu id=“vos” value="#{projectBean.valuesOctopusId}" > …
<h:panelGroup id=“panel”>
<h:dataTable id=“tableV” value="#{projectBean.showValuesAdd()}" var=“value” >
<f:facet name=“header” >Values </f:facet>
<h:column>
#{value.idOctopus.varOctopus}
#{value.alternative}
<h:commandLink action="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" value="X">
<f:ajax render=“panel” />
</h:commandLink>
</fieldset>
</h:column>
</h:dataTable></h:panelGroup> [/code]
só outra pergunta… existe o event=“action” no f:ajax? nunca usei…
tenta alguma coisa assim…[/quote]
ok, vamos por partes, sim o meu selectonemenu funciona, ou seja ele atualiza a minha h:dataTable, o envento action pelo o que eu li(e posso ta falando uma baita besteira) assume o valor do action do commandlink, saca ? e quando eu coloquei o h:panelGroup deu o seguinte erro no navegador:
Stack Trace:
javax.faces.FacesException: <f:ajax> contains an unknown id 'panel' - cannot locate it in the context of the component j_idt27
at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.getResolvedId(AjaxBehaviorRenderer.java:285)
at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.appendIds(AjaxBehaviorRenderer.java:272)
at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.buildAjaxCommand(AjaxBehaviorRenderer.java:214)
at com.sun.faces.renderkit.html_basic.AjaxBehaviorRenderer.getScript(AjaxBehaviorRenderer.java:86)
at javax.faces.component.behavior.ClientBehaviorBase.getScript(ClientBehaviorBase.java:103)
at com.sun.faces.renderkit.RenderKitUtils.getSingleBehaviorHandler(RenderKitUtils.java:1610)
at com.sun.faces.renderkit.RenderKitUtils.renderHandler(RenderKitUtils.java:1703)
at com.sun.faces.renderkit.RenderKitUtils.renderOnclick(RenderKitUtils.java:452)
at com.sun.faces.renderkit.html_basic.CommandLinkRenderer.renderAsActive(CommandLinkRenderer.java:231)
at com.sun.faces.renderkit.html_basic.CommandLinkRenderer.encodeBegin(CommandLinkRenderer.java:125)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:302)
at com.sun.faces.renderkit.html_basic.TableRenderer.renderRow(TableRenderer.java:384)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:161)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
põe para reenderizar assim:
<h:commandLink action="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" value="X">
<f:ajax render=":NomeDoForm:panel" />
</h:commandLink>
[quote=alves.Felipe]põe para reenderizar assim:
<h:commandLink action="#{projectBean.removeValuesOctopusToList(value.idValuesOctopus)}" value="X">
<f:ajax render=":NomeDoForm:panel" />
</h:commandLink>[/quote]
Perfeito alves.Felipe! me tirou um baita problema das costas, to a noite toda pesquisando isso cara. mto obrigado mesmo
então cara… é normal acontecer isso… de vc mandar reenderizar o componente e ele não atualizar…
ai vc precisa colocar ele dentro de outro (ex. panelgroup), e mandar atualizar o pai…