为什么在同一页面上提交另一个表单时触发了f:event postValidation

时间:2015-09-02 12:07:40

标签: jsf jsf-2.2

我有一个jsf 2.2应用程序(myfaces 2.2.8)。在页面上,我有来自不同的(jsf:include)facelet文件的多个表单。

在一个文件中,表单定义为<f:event type="postValidate"...>标记。在另一个包含文件中,另一个表单仅使用提交按钮定义。

单击此按钮会触发f:event中定义的侦听器。为什么?

1 个答案:

答案 0 :(得分:1)

f:event标记未绑定到任何表单。它只是告诉JSF在声明type的事件发生时调用侦听器的标记,无论视图在何处。因此,它是在提交任何表单时调用的预期行为。无论如何,您可以将源表单抓取到侦听器中:

public void listener(ComponentSystemEvent evt) {
    //Get the source form
    evt.getSource();
}

另见: