2013-04-22 3 views
0

는 믹스 인 라이프 사이클을 잘 알고 누군가가 나 조언을 주시겠습니까 요청합니다믹스 인 스크립트는

(사용 태피스트리 5.3.6)

난 '에서 일부 자바 스크립트를 트리거하는 믹스 인을 afterRender '. 필드의 clientId를 초기화해야하기 때문에 'afterRender'에서이 작업을 수행합니다.

페이지가 처음 렌더링 될 때 연결되는 필드가 렌더링되면 좋지만 영역 업데이트/xhr 요청의 일부로 렌더링 된 경우에는 스크립트가 클라이언트에 보내지지 않습니다.

JavaScriptCallback을 중단하고 ajaxResponseRenderer에 성공적으로 추가되면 호출되지 않습니다.

고마워요!

코드 예는 :

public class MyMixin 
{ 
    ... 

    void afterRender() 
    { 
     addScript("MyMixin.create('%s', '%s');", field.getClientId(), myVariable); 
    } 

    private void addScript(final String format, final Object... args) 
    { 
     if (!request.isXHR()) 
     { 
      jsSupport.addScript(InitializationPriority.NORMAL, format, args); 
      return; 
     } 

     ajaxResponseRenderer.addCallback(new JavaScriptCallback() 
     { 
      @Override 
      public void run(JavaScriptSupport javascriptSupport) 
      { 
       javascriptSupport.addScript(InitializationPriority.NORMAL, format, args); 
      } 
     }); 
    } 
} 

답변

0

당신은 두 경우 모두 같은 jsSupport 개체를 사용해야합니다 request.isXHR() == {true 또는 false}.

JavaScriptSupport는 AjaxResponseRenderer에 이미 등록되어 있습니다. AjaxResponseRendererImpl을 참조하십시오.

그래서 코드는

void afterRender() { 

    jsSupport.addScript("MyMixin.create('%s', '%s');", field.getClientId(), myVariable); 
} 
+0

과 같을 것이다 당신입니다 반 바로 .. 나는 더 이상 AjaxResponseRenderer을 통해 갈 필요가 - 그러나 그것은 때문이 아니라 AjaxResponseRendererImpl의, JavascriptSupport 지금 때문에 'partialMode'이다 – pstanton