2012-11-13 4 views
1

페이지에서 Chosen jQuery 플러그인을 사용하고 있습니다.jQuery Chosen 및 JSF2 f : 아약스 렌더링 문제

제가 선택에 backbean 함수를 호출하고, F를 사용하여 다른 드롭의 값을 popualtes 드롭 다운을 가지고 AJAX 그래서 같은 :

<h:selectOneListbox id="drop1" 
        value="#{myBean.drop1Value}" 
        styleClass="chzn-select"> 
     <f:ajax event="valueChange" listener="#{myBean.doSomething}" 
        render="drop2"/> 
     <f:selectItems value="#{myBean.drop1Values}" /> 
</h:selectOneListbox> 

<h:selectOneListbox id="drop2" 
        value="#{myBean.drop2Value}" 
        styleClass="chzn-select"> 
     <f:selectItems value="#{myBean.drop2Values}" /> 
</h:selectOneListbox> 

문제는 여전히 이벤트 완료 drop2 다시 렌더링 도착한다는이고 enter image description here

나는 추가 시도 : 아래처럼 옆에 나타나는 오래 된 빈 선택 드롭 다운을

<f:ajax event="valueChange" listener="do something" 
        render="drop2" onevent="updateDropdown" /> 

    function updateDropdown(event) { 
     if(event.status == 'success'){ 
      $('.chzn-select').chosen(); 
     } 
    } 

하지만 업데이트 된 drop2에 선택하면됩니다. 이전에 선택한 드롭 다운이 아직 남아 있습니다. 누군가이 상황을 어떻게 다루는 지 말해 줄 수 있습니까? 감사합니다

가능한 해결책은 있습니까?

<script> 
      function updateDropDowns(event){ 
       if(event.status == 'success'){ 

        //this line removes the previous Chosen dropdown 
        //the problem was that when the drop2 was being updated by f:ajax render 
        // i would end up with two Chosen Divs so removing the old div before 
        //reattaching Chosen to select component seems to do good and eliminate duplicated 
        //chosen dropdowns! 

        $('div [id$="drop2_chzn"]').remove(); 
        //this lines attaches Chosen to the updates plugin 
        $('.chzn-select').chosen(); 
       } 
      } 
     </script> 
+0

'리스너를 제거해야 render="drop2_wrapper"

= " 뭔가''??? 'listener'는 bean의 어떤 메소드를 가리켜 야합니다 ...'listener = "# {myBean.doSomethig}"와 같이 당신은 달성하려고합니까? 그것의 명확하지 않은 ... (drop1을 숨기려면 drop2에 스타일을 적용하시오) – Daniel

+0

@Daniel @kolossus 질문은 '청취자'와는 아무런 관련이 없기 때문에 실제 코드를 추가하지 않겠다는 것을 무시했습니다. 질문은 jQuery Chosen 플러그인에 관한 것이고, Chosen 플러그인에 의해 이상한 행동을 일으키는 요소가 어떻게 렌더링되는지에 관한 것입니다. 니가 무슨 소리를하는지는 모르겠다. ''코드 덩어리가 생략 된''무엇입니까? 명백한 이유가없는 한 질문의 투표를 피하십시오 - 질문이 명확하지 않은 경우 그렇게 말하십시오. – ke3pup

+0

@techventure 그게 이상한 행동 *이란 무엇입니까? 어떻게 행동해야합니까? – Daniel

답변

0

이 시도 : 않는 h:panelGroup와 drop2 포장 그것에게 ID를 부여하고 그것을

대신 render="drop2" 렌더링 중복을

+0

감사합니다. 하나의 솔루션으로 내 질문을 업데이트했습니다. – ke3pup