如何将bean 的方法与actionListener 中的包绑定?
How to bind a bean's method with package in actionListener?
我是 Java/JSF 技术的新手,我一直在尝试制作简单的 UI 来了解 Java/JSF 世界中发生的事情。
现在我想将 ManagedBean 的方法及其包名称绑定到 CommandButton 的 actionListener。
示例:
index.xhtml
...
<h:commandButton actionListener="#{com.acme.myclass.MyMethod}" ...
...
MyClass.java
package com.acme;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class MyClass {
public MyClass() {
// Constructor
}
public void MyMethod() {
// Do some job
}
}
我尝试按照上面给出的示例绑定方法,但未调用该方法。此外,我在 Netbeans 的小自动完成 window 中看不到我的包。如果我以 #{class.method} 格式绑定方法(如互联网上所有给出的示例),它就可以工作。
有办法实现吗?
为什么我需要这样做?
虽然项目越来越大,但命名 class 变得越来越难。所以,我认为相同的 class 名称在不同的包中会让生活更轻松。
JSF 不允许那种 actionlistener 绑定,很简单。与 JSF 世界中的唯一相似之处是 ActionListener
接口的独立实现,然后您可以使用它提供 FQN:
<h:commandButton>
<f:actionListener type="com.you.YourActionListenerImpl" />
</h:commandButton>
其中 YourActionListenerImpl
将是一个 class 实现 ActionListener
如前所述
至于为什么你想这样做,我认为你夸大了命名的成本——这并不难。庞大的、庞大的项目与 Java 工件的命名相处得很好(例如 Spring 项目)。
我是 Java/JSF 技术的新手,我一直在尝试制作简单的 UI 来了解 Java/JSF 世界中发生的事情。
现在我想将 ManagedBean 的方法及其包名称绑定到 CommandButton 的 actionListener。
示例:
index.xhtml
...
<h:commandButton actionListener="#{com.acme.myclass.MyMethod}" ...
...
MyClass.java
package com.acme;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class MyClass {
public MyClass() {
// Constructor
}
public void MyMethod() {
// Do some job
}
}
我尝试按照上面给出的示例绑定方法,但未调用该方法。此外,我在 Netbeans 的小自动完成 window 中看不到我的包。如果我以 #{class.method} 格式绑定方法(如互联网上所有给出的示例),它就可以工作。
有办法实现吗?
为什么我需要这样做?
虽然项目越来越大,但命名 class 变得越来越难。所以,我认为相同的 class 名称在不同的包中会让生活更轻松。
JSF 不允许那种 actionlistener 绑定,很简单。与 JSF 世界中的唯一相似之处是 ActionListener
接口的独立实现,然后您可以使用它提供 FQN:
<h:commandButton>
<f:actionListener type="com.you.YourActionListenerImpl" />
</h:commandButton>
其中 YourActionListenerImpl
将是一个 class 实现 ActionListener
如前所述
至于为什么你想这样做,我认为你夸大了命名的成本——这并不难。庞大的、庞大的项目与 Java 工件的命名相处得很好(例如 Spring 项目)。