JSF - >使用一个动作侦听器执行两个动作按钮

时间:2015-08-21 16:58:53

标签: jsf

我有一个托管bean,我在其中定义了两个执行两个不同操作的方法。我在.xhtml页面中定义了两个执行两个不同操作的按钮。 我创建了一个ActionListener实现类。在这个类中,我想根据按钮的值执行两个不同的操作之一。 我应该编码什么来检索ActionListener实现类中的按钮的值,我应该如何定义两个按钮以确保使用相同的动作侦听器

1 个答案:

答案 0 :(得分:2)

您可能已经知道,ActionListener界面定义了abstract方法,称为processAction(ActionEvent event)

参数ActionEvent可用于检索事件的来源,旧值/新值(当动作侦听器附加到某些特定组件时等)。

因此,您可以通过以下方式获取组件的客户端id

package com.somepackage;
...
public class MyActionListener implements ActionListener {
    public void processAction(ActionEvent event) {
        String componentId = event.getComponent().getClientId();
        ...
    }
}
  

...我该如何定义两个按钮以确保它们使用相同的动作侦听器?

对于这两个按钮,您必须嵌套一个<f:actionListener>,并确保其type属性指向您的操作侦听器的完全限定类名。例如:

<h:commandButton id="buttonA">
    <f:actionListener type="com.somepackage.MyActionListener" />
</h:commandButton>
<h:commandButton id="buttonB">
    <f:actionListener type="com.somepackage.MyActionListener" />
</h:commandButton>