在对数据表进行排序时,不会调用Bean侦听器

时间:2016-04-07 16:06:27

标签: jsf listener

我在JSF数据表中显示数据:

<p:dataTable value="#{mailServices.mailServices}" var="s">
    <p:column headerText="ID" sortBy="#{s.ID}">
        #{s.ID}
    </p:column>
    <p:column headerText="Name" sortBy="#{s.name}">
        #{s.name}
    </p:column>
    <p:column headerText="Aktiv" sortBy="#{s.startup}">
        <p:selectBooleanCheckbox value="#{s.startup}" >
            <f:ajax event="change" listener="#{mailServices.toggleMailService}"/>
            <f:attribute name="serviceid" value="#{s.ID}"/>
        </p:selectBooleanCheckbox>
    </p:column>
</p:dataTable>

只要我没有点击列标题,就会在单击复选框时调用侦听器。但是只要我对列进行排序(无论它是什么列),都不会调用侦听器。

我的听众看起来像:

public void toggleMailService(AjaxBehaviorEvent e) {
    //code
}

可能是我错误地使用了<f:ajax event...>吗?

提前致谢!

1 个答案:

答案 0 :(得分:-1)

@BalusC说的是,标签缺少左括号:

<f:ajax event="change" listener="#MailServices.toggleMailService}"/>

尝试

<f:ajax event="change" listener="#{MailServices.toggleMailService}"/>

还要确保您的Bean被声明为&#34; MailServices&#34;

@ManagedBean(name="MailServices")