2013-01-22 2 views
1

여기에서 도움말과 조언을 얻으십시오. 제 환경은 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 인터페이스를 모두 지원하는 여러 빈을 갖기를 원하지만 각각 고유의 호출 가능한 공용 메소드가 있습니다. 인터페이스 대신 추상적 인 클래스를보고 있어야할까요?

감사 리치

+0

JSF 관리 빈 또는 EJB입니까? 예외는 이것이 EJB임을 시사합니다. – BalusC

+0

아마도 JSF EJB 및 actionListeners와 관련이 있습니다. http://www.seamframework.org/136633.lace –

답변

0

나는 문제가 인터페이스와 아무 상관이있다, 당신은의 actionListener에 대한 잘못된 서명을 가지고 생각합니다. 당신은 같은 몇 가지 방법 서명이 필요합니다

어쩌면 당신은 당신의 코드 샘플에서 빈에 대한 몇 가지 설정을 표시되지 않은
public void initialise(ActionEvent event) 

?

관련 문제