p:commandButton与p:ajax无法正常工作

5

我尝试做这个,但是它从来没有工作过;为什么ajax不被支持?

<p:commandButton value="MAJ" rendered="#{LigneXL.resultat eq 'Pas de FMD'}" onclick="confirmation.show()"  >
    <f:setPropertyActionListener target="#{parserXls.selectitem}" value="#{LigneXL}" />                  
    <p:ajax event="click" listener="#{parserXls.listenercomposant()}"/>             
</p:commandButton> 

监听器为什么从未执行!!! 我试图根据selectitem获取另一个对象。
public void listenercomposant(){
    composantitem=ChercherComposant(selcetitem.getRefcomposant(), selcetitem.getReffabricant());
}

2
我希望 selcetitem 在你的真实代码中拼写正确。 - Alexandre Lavoie
2个回答

11

p:commandButton已经本地支持ajax启用,因此不需要在内部使用p:ajax,您只需要使用它即可。

  <p:commandButton value="TestButton" actionListener="#{bean.saveSomething}" id="id"    
  update="panel" />

正如您所看到的,p:commandButton 已经有了一个 actionListener,所以只需使用它即可。


是的,我尝试使用这个,但当我使用selectitem时,它没有更新,因为set Property在action listner之后执行。 - Adriano_jvma
当我使用actionListner时,selectitem为空。 - Adriano_jvma
1
你能告诉我你具体想做什么吗?你正在处理什么样的场景? - Makky
我正在处理一个数据表,每一行都有一个按钮。当我点击按钮时,我想要改变这一行的某些属性,所以我使用了 setpropertyActionListener。但是我还需要根据选择的项目获取其他对象。 - Adriano_jvma
1
Accept as Answer then please. - Makky
这个问题是什么?我遇到了一些类似的问题。 - Erick

-2

这是我使用动作而不是监听器的解决方案

  <p:commandButton value="MAJ" rendered="#{LigneXL.resultat eq 'Pas de FMD'}" onclick="confirmation.show()" action="#{parserXls.listenercomposant()}" >
    <f:setPropertyActionListener target="#{parserXls.selcetitem}" value="#{LigneXL}" />                                            
    </p:commandButton> 

这不使用ajax。 - GregD
@GregD:没错,这个组件内置了Ajax。 - Kukeltje
@Kukeltje 确实是这样。一年多前我发表这条评论时并不知道这一点。 - GregD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接