2011-08-21 3 views
1

JSF 2 컴포넌트에 ajax 리스너를 프로그래밍 방식으로 또는 동적으로 추가하는 방법은 무엇입니까?JSF 2 컴포넌트에 ajax 리스너를 프로그래밍 방식으로 또는 동적으로 추가하는 방법은 무엇입니까?

... 
    FacesContext facesContext = FacesContext.getCurrentInstance(); 
    AjaxBehavior dragStart = (AjaxBehavior)facesContext.getApplication().createBehavior(AjaxBehavior.BEHAVIOR_ID); 
    dragStart.addAjaxBehaviorListener(new DragEnterListener()); 
    dragStart.setTransient(true); 
    component.addClientBehavior("dragstart", dragStart); 
    ... 

    public class DragEnterListener implements AjaxBehaviorListener { 

    @Override 
    public void processAjaxBehavior(AjaxBehaviorEvent event) throws AbortProcessingException { 
     System.out.println("AjaxListener CALLED!!! "); 
    } 
    } 

을하지만 thid이 작동하지 않습니다 :
나는 시도했다.

serverError: class java.lang.IllegalStateException 
cz.boza.formcreator.FormModel$DragEnterListener 

내가 RichFaces이 예를 발견 :이 더

addAjaxBehaviorListener(MethodExpression methodExpression) 

없다 AjaxBehavior 클래스에 http://community.jboss.org/message/611571

그러나 일반의 JSF 2 페이지에서 나는이 JS 예외있어 단지

addAjaxBehaviorListener(ValueExpression valueExpression) 

나는 이것을 여러 날 동안 풀려고 노력하고있다.
도와주세요.
대단히 감사합니다.

+0

전체 스택 추적을 게시하십시오. 그렇지 않으면 궁극적으로 예외를 발생시키는 호출 경로에 대해 알지 못합니다. 이 정보는 모두 스택 추적에 있습니다. – BalusC

답변

0

좋아, 그래서 더 많은 연구를 만들었습니다 그리고 만약 내가 AJAax 수신기를 추가 할 수없는 component도 동적으로 (자바에서 - parant.getChildren().add(component)처럼) 페이지에 추가되면 모든 것이 잘 동작합니다.

그러나있는 내가 (JSP에서 - <h:panelGroup binding="#{bean.component}">처럼) 정적으로 추가됩니다 아약스 리스너를 추가 할 wan't component 경우 페이지에, 상기 이상한 예외가 발생합니다 :

serverError: class java.lang.IllegalStateException 
cz.boza.formcreator.FormModel$DragEnterListener 

물어하려고합니다 JSF 포럼에서이 질문. 모잠 전의 버그일지도 모릅니다.

관련 문제