单击 primefaces 中的字段集后如何调用方法?

How to call a method after clicking a fieldset in primefaces?

这是我的 .xhtml 文件中的代码,我在字段集下添加了代码

index.xhtml

    <p:fieldset legend="BPS Listener Method" toggleable="true" collapsed="#{bpsFrontBean.bpsListenerSwitch}" toggleSpeed="500" style="width: 920px;margin: 0 auto; text-align: left">
    <p:ajax listener="#{bpsFrontBean.onToggleBpsListenerSwitch}" update="parametersGrid"/>
    .........
    </p:fieldset>

如果我 运行 在显示页面之前使用上面的代码,则会出现错误消息:

    javax.faces.view.facelets.TagException: <p:ajax> Event attribute could not be determined: null

我想在单击可切换字段集时触发一个方法。

Primefaces 用户指南 (http://www.primefaces.org/showcase/ui/panel/fieldset.xhtml) 的第 205-206 页说:

Ajax Behavior Events

toggle is the default and only ajax behavior event provided by fieldset that is processed when the content is toggled. In case you have a listener defined, it will be invoked by passing an instance of org.primefaces.event.ToggleEvent.

Here is an example that adds a facesmessage and updates growl component when fieldset is toggled.

<p:growld id="messages" />
<p:fieldset legend="Toggleable Fieldset" toggleable="true">
    <p:ajax listener="#{bean.onToggle}" update="messages"/>
    //content
</p:fieldset>

上豆:

public void onToggle(ToggleEvent event) {
   Visibility visibility = event.getVisibility();
   FacesMessage msg = new FacesMessage();
   msg.setSummary("Fieldset " + event.getId() + " toggled");
   msg.setDetail("Visibility: " + visibility);
   FacesContext.getCurrentInstance().addMessage(null, msg);
}

您必须在 p:ajax 中添加 event="toggle" 以消除错误:

<p:ajax event="toggle" listener="#{bpsFrontBean.onToggleBpsListenerSwitch}" update="parametersGrid"/>

遗憾的是,目前 (PF 8) 文档中未提及此内容。