2012-11-14 2 views
0

버튼의 CSJS onclick 이벤트 내에 일부 SSJS가 있습니다. 이 SSJS가 페이지로드 중에 실행되는 것을 막을 수있는 방법이 있습니까?xpages - CSJS에서 페이지로드시 SSJS를 방지합니다.

감사

+1

당신은 아마 일반적인 실수에 직면 해 - CSJS은 SSJS 부품을 포함 - 그것은 때 페이지 실행 렌더링합니다. 이러한 이벤트에는 "활성"스크립트를 사용하지 않아야합니다. 또한, 일부 소스 샘플은 귀하의 질문에 도움이 될 것입니다. –

답변

1

이는 facesContext.getRenderResponse()을 확인하여 수행 할 수 있습니다. 이면 페이지가 다시로드되고, 그렇지 않으면 false이됩니다. 플래그가 올바르게 설정되지 않았지만 페이지로드 여부를 쉽게 확인할 수 있습니다. 여기

는 예 XPage입니다 : 당신이 XPage를 열고 버튼을 클릭하면

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:button value="Reload CSJS" id="buttonReloadCSJS"> 
     <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> 
     <xp:this.script> 
      <![CDATA[#{javascript: 
       facesContext.getRenderResponse()?"alert('NotOnLoad');":"alert('OnLoad')"; 
      }]]> 
     </xp:this.script> 
     </xp:eventHandler> 
    </xp:button> 
</xp:view> 

이 페이지가 다시로드되고 다른 CSJS 코드를가집니다.

는 편집 : 여기
는 버튼을 부분적으로 새로 고친 경우에만 코드를 계산하는 또 다른 방법입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 

    <xp:div id="refreshMe"> 
     <xp:button value="Reload CSJS" id="buttonReloadCSJS"> 
     <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="refreshMe"> 
      <xp:this.script> 
       <![CDATA[#{javascript: 
        var ajax = new com.ibm.xsp.ajax.AjaxUtil(); 
        if(ajax.isAjaxPartialRefresh(facesContext) == true){ 
        return "alert('Refreshed')"; 
        } 
       }]]> 
      </xp:this.script> 
     </xp:eventHandler> 
     </xp:button> 
    </xp:div> 

</xp:view>