p:ajax里面的h:commandButton没有调用backing bean方法

时间:2015-05-23 09:55:49

标签: ajax jsf primefaces

我试图使用<p:ajax>调用我的支持bean方法,但它不起作用。我的<p:ajax>包含在<h:commandButton>内,如下所示:

<h:commandButton value="#{msg['supprimer.image']}"
    styleClass="btn btn-sm btn-danger" update=":uploader"
     process="@this">

    <p:ajax event="click" update="imagesList" process="@this"
    listener="#{creationBesoinBean.supprimerImage(uploadedImage)}"/> 
</h:commandButton>

但是不会调用supprimerImage方法。有人能帮帮我吗?

3 个答案:

答案 0 :(得分:3)

方法监听器应该在支持bean

中具有此签名
public void supprimerImage ()

<p:ajax event="click" update="imagesList" process="@this"
            listener="#{creationBesoinBean.supprimerImage}"></p:ajax>

答案 1 :(得分:0)

p:ajax的点击事件名称为onclick而不是click。 在Primefaces版本的PrimeFaces User's Guide中搜索“Ajax行为事件”,您可以获得有关p:ajax的更多信息。

答案 2 :(得分:0)

PrimeFaces p:ajax已经为它附加的元素使用了默认事件,在commandButton的情况下是click方法。

以下代码调用就好了:

<h:commandButton value="Do Stuff" styleClass="btn btn-sm btn-danger"
    update=":uploader" process="@this">
<p:ajax process="@this"
    listener="#{creationBesoinBean.supprimerImage}">
    <f:setPropertyActionListener value="referenceUploadedImageHere"
        target="#{creationBesoinBean.image}" />
    </p:ajax>
</h:commandButton>

p:ajax的Listener-Method必须如下所示:

public void supprimerImage(AjaxBehaviorEvent event) {

如果您使用按钮的操作标记,则需要如下所示:

public void supprimerImage()

ActionListener-Methods例如在p:按钮中,如下所示:

public void supprimerImage(ActionEvent event)

至于如何使用Uploaded Image,要么将它保存在bean中并在p:ajax的Listener-Method中使用它,要么使用f:setPropertyListener设置它。此外,我同意Tiny的建议,并使用一个p:commandButton,它内置了actionListener和action,因此你不会使用p:ajax标签混乱你的代码。