尋求幫助和建議這裏定義的所有方法。我的環境是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都有自己可調用的公共方法。我應該看看抽象類而不是接口。
感謝 豐富
它是一個JSF託管Bean或EJB?異常表明它是一個EJB。 – BalusC
也許與JSF EJB和actionListeners相關:http://www.seamframework.org/136633.lace –