在这里寻求帮助和建议。我的环境是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 接口所必需的。
虽然上述编译正确,但在部署(在 JBOSS AS 7 中)时,当我尝试从网页上的 actionListener 调用初始化方法时,出现 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 解释为它的业务接口的定义吗?
这里的正确方法是什么?我想要几个都支持 ComponentUploader 接口的 bean,但每个都有自己的可调用公共方法。我应该看抽象类而不是接口。
谢谢丰富