2017-02-13 1 views
0

아코디언 패널에 문제가 있습니다. 나는이 비슷한 아코디언 한 :머리글에 단추를 추가 할 때 아코디언 패널이 접히지 않도록하려면 어떻게해야합니까?

<p:accordionPanel> 
    <p:tab title="tabTitle"> 
     <f:facet name="title"> 
      <!-- problematic button --> 
      <p:commandButton value="button"/> 
     </f:facet> 
     <h:PanelGrid> 
      <p>Accordion content</p> 
     </h:panelGrdi> 
    </p:tab> 
</p:accordionPanel> 

문제는 - 내가 버튼을 클릭하면, 전체 아코디언 탭 붕괴됩니다.

제 질문은 : 단추 클릭으로 아코디언이 붕괴되는 것을 방지하는 방법은 무엇입니까? 동시에 아코디언을 머리글을 클릭 할 때 붕괴시키고 싶습니다. 그러나 버튼 외부에 있습니다.

나는 PrimeFaces 5.3과 JSF 당신의 헤더 2.2.11

+1

이 조금 복잡를 방해하지 않습니다. 문제는 아코디언에 클릭 이벤트가 바인딩되어 있고 아코디언 내부에있는 버튼입니다.이 바인딩을 상속하면 솔루션이 트릭이됩니다. 여기에 두 가지 옵션이 있습니다. 1 - 아코디언 외부에 레이어를 만들고, 버튼을 배치하고 아코디언 위에 배치합니다. 2 단추에서 click 이벤트를 전달하지 않도록 코드를 변경하십시오. –

+0

다른 요소를 클릭해도 열리도록 하시겠습니까 ??? –

+0

@JorgeCampos - 클릭 이벤트를 전파하지 않는 효과를 얻으려면 어떻게해야할까요? –

답변

0

은이 @JorgeCampos에 의해 제안 된 것처럼 - 우리가 아코디언에 버튼에서 이벤트에 "거품"을 방지하기 위해 event.stopPropagation()를 사용할 수 있습니다. 우리는 물론 다른 뭔가를 다른 이벤트를 사용하거나 ManagedBean은에서 메소드를 호출하는 actionListener을 사용할 수 있습니다

<p:accordionPanel> 
    <p:tab title="tabTitle"> 
     <f:facet name="title"> 
      <p:commandButton value="button" onclick="event.stopPropagation();"/> 
     </f:facet> 
     <h:PanelGrid> 
      <p>Accordion content</p> 
     </h:panelGrdi> 
    </p:tab> 
</p:accordionPanel> 

, update를 사용 : 코드 사용법은 다음과 같이 보이는 것이다 질문에 게시. 예를 들어

<p:commandButton 
    value="button" 
    onclick="event.stopPropagation();" 
    oncomplete="PF('someDialog').show();" <!-- open dialog by js --> 
    actionListener="#{someBean.someMethod}" <!-- call java method --> 
    update="someComponent" <!-- update component --> 
/> 

을 stoping 이벤트 전파

0

때어 모든 이벤트 한 다음 다시 구성 요소의 init 메소드를 호출 바인딩을 사용하고 있습니다.

<p:accordionPanel widgetVar="myAccordion"> 
    <p:tab title="tabTitle"> 
    <f:facet name="title"> 
     <!-- problematic button --> 
     <p:commandButton value="button" 
      onclick="PF('myAccordion').jq.find('.ui-accordion-header').unbind()" 
      oncomplete= "PF('myAccordion').init(PF('myAccordion').cfg)"/> 
    </f:facet> 
    <h:PanelGrid> 
     <p>Accordion content</p> 
    </h:panelGrdi> 
    </p:tab> 
</p:accordionPanel> 
+0

대단히 고맙습니다.이 솔루션에 대해 고맙습니다. 테스트 해 보았습니다.하지만 문제의 게시물에 대한 의견에 따르면,'event.stopPropagation()'을' onclick' 액션 –

관련 문제