2013-01-22 14 views
1

寻求帮助和建议这里定义的所有方法。我的环境是JSF2。在JSF2我必须当后台bean实现了自定义接口

我有很多的,所有有需要上传的文件形式。我想使用一个通用的模态弹出对话框来处理文件上传。

每种形式都有不同的后台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调用初始化方法时(在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

它是一个JSF托管Bean或EJB?异常表明它是一个EJB。 – BalusC

+0

也许与JSF EJB和actionListeners相关:http://www.seamframework.org/136633.lace –

回答

0

我觉得你有错误的签名为ActionListener的,这个问题已经无关接口。 你需要像一些方法签名:

public void initialise(ActionEvent event) 

也许你是不是你的代码示例所示一些配置的豆?

相关问题