如何检查哪些 primefaces ajax 事件触发到 java 方法

How to check which primefaces ajax event triggered into java method

假设我们有两种类型的事件将被定向到与下面示例中提到的相同的方法

<p:ajax event="cellEdit" listener="#{bean.eventype}"/>
<p:ajax event="change" listener="#{bean.eventype}"/>

这里是 bean 方法的例子

public void eventype(){
  println("");
}
  1. 问题是,如果我想在 eventtype 方法中识别哪个值来自哪个事件,是否可以?

  2. 是否可以在事件类型方法中区分上述两个事件?

已编辑: 我确实尝试添加 eventype(AjaxBehaviorEvent event) 并使用 event.getSource() 但似乎我只是在获取 org.inputtext.component@something.

之类的源详细信息

事件类型已张贴在请求中,以便组件能够对其进行解码以触发正确的事件。参数名称是javax.faces.behavior.event,你可以这样得到:

String eventType = FacesContext.getCurrentInstance()
        .getExternalContext()
        .getRequestParameterMap()
        .get("javax.faces.behavior.event");

这是在 PrimeFaces 中实现的,例如:

https://github.com/primefaces/primefaces/blob/042b5a14116cd4a279a114883a8575e0788494b8/primefaces/src/main/java/org/primefaces/util/ComponentUtils.java#L197-L224

请注意,您还可以在代码中使用 PrimeFaces 常量 Constants.RequestParams.PARTIAL_BEHAVIOR_EVENT_PARAM 而不是硬编码 "javax.faces.behavior.event"