여기에서 도움말과 조언을 얻으십시오. 제 환경은 JSF2입니다.JSF2에서 bean을 지원할 때 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()
{
...
}
이제이 파일이
public interface ComponentUploader
{
void uploadComponentClicked(ActionEvent e);
void handleFileUpload(FileUploadEvent event);
List<UploadedFile> getUploadedFiles();
void saveUploadComponentClicked();
}
백킹 빈 클래스 다음이 인터페이스를 구현 업로드 각각의 빈 지원하기 위해 구현해야하는 메소드를 정의하기 위해 다음과 같은 인터페이스를 ... 쓴 , 각 backing 빈에는 initialise()와 같은 다른 public 메소드가 있지만, 이러한 메소드는 ComponentUploader 인터페이스를 구현하는 데 필요하지 않습니다.
위의 내용은 올바르게 컴파일되지만 내 웹 페이지의 actionListener에서 initialise 메서드를 호출하려고하면 (JBoss AS 7에서) 배포 할 때 메서드를 찾을 수 없음 오류가 발생합니다.
Caused by: javax.el.MethodNotFoundException: Method not found: Proxy for view class: com.vesey.searchpoint.interfaces.ComponentUploader of EJB: SupplierBean.initialise()
인터페이스에 정의되지 않은 이유가있는 백업 빈에 공용 메소드를 호출 할 수없는 이유를 알 수 없습니다. 인터페이스가 JSF에 의해 비즈니스 인터페이스의 정의로 해석되기 때문입니까?
올바른 접근 방법은 무엇입니까? ComponentUploader 인터페이스를 모두 지원하는 여러 빈을 갖기를 원하지만 각각 고유의 호출 가능한 공용 메소드가 있습니다. 인터페이스 대신 추상적 인 클래스를보고 있어야할까요?
감사 리치
JSF 관리 빈 또는 EJB입니까? 예외는 이것이 EJB임을 시사합니다. – BalusC
아마도 JSF EJB 및 actionListeners와 관련이 있습니다. http://www.seamframework.org/136633.lace –