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

时间:2015-08-19 08:01:23

标签: jsf jsf-2 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

如果单击了可切换的字段集,我想触发一个方法。

2 个答案:

答案 0 :(得分:1)

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

  

Ajax行为事件

     

toggle 是默认的,只有ajax行为   由内容集提供的事件,在内容为时处理   切换。如果您定义了一个侦听器,它将被调用   传递org.primefaces.event.ToggleEvent的实例。

     

这是一个添加facesmessage并更新growl的示例   切换字段集时的组件。

<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);
}

答案 1 :(得分:1)

您必须在event="toggle"内添加p:ajax才能消除错误:

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

不幸的是,当前(PF 8)尚未在文档中提及。