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