在这里寻求帮助和建议。我的环境是JSF2。
我有许多表格都需要上传文件。我想使用常见的模式弹出对话框来处理文件上传。
每个表单都有一个不同的支持bean,我希望它们都能实现支持文件上载操作所需的方法。
我编写了以下接口来定义每个bean必须实现的方法以支持此文件上载
public interface ComponentUploader
{
void uploadComponentClicked(ActionEvent e);
void handleFileUpload(FileUploadEvent event);
List<UploadedFile> getUploadedFiles();
void saveUploadComponentClicked();
}
支持bean类然后实现此接口...
public class SupplierBean implements ComponentUploader
{
public void handleFileUpload(FileUploadEvent event) {
...
}
public void uploadComponentClicked(ActionEvent e)
{
...
}
public void saveUploadComponentClicked()
{
...
}
public List<UploadedFile> getUploadedFiles()
{
...
}
//other public methods...
public void initialise()
{
...
}
现在,每个支持bean都有其他公共方法,例如initialise(),但是实现ComponentUploader接口不需要这些方法。
虽然以上编译正确,但当我尝试从我的网页上的actionListener调用initialise方法时(在JBOSS AS 7中),我得到Method Not Found错误;
Caused by: javax.el.MethodNotFoundException: Method not found: Proxy for view class: com.vesey.searchpoint.interfaces.ComponentUploader of EJB: SupplierBean.initialise()
我不明白为什么如果没有在接口中定义,我无法在辅助bean上调用公共方法。是因为JSF将接口解释为它的业务接口的定义吗?
这里的正确方法是什么?我想有几个bean都支持ComponentUploader接口,但每个bean都有自己的可调用公共方法。我应该看抽象类而不是接口。
由于 富
答案 0 :(得分:0)
我认为你的actionListener签名错误,问题与接口无关。 你需要一些方法签名,如:
public void initialise(ActionEvent event)
也许您有一些未在代码示例中显示的bean配置?