2013-01-22 43 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) 

也許你是不是你的代碼示例所示一些配置的豆?

相關問題