2014-03-14 3 views
0

특정 xpage 구성 요소에 대해 qtip2를 표시하려고합니다. 그것을 일반화하기 위해 나는 사용자 정의 컨트롤 (fieldID & componentID를 사용자 지정 속성으로 사용)을 만들었습니다. 나는 각 fieldID 및 각 id (고유 한)에 대한 도움말 텍스트를 가지고보기가있다xpages에서 qtip 사용

내 문제는 입력 매개 변수를 사용하여 CSJS에서 SSJS 함수를 호출 할 수 없다는 것입니다. 아래 내 코드를 참조하십시오. 만약 내가 하드 코드 fieldID (getFieldHelp (' "+ fieldID +"')) 모든 일을 잘 작동하지만 null 값을 반환합니다 변수를 전달합니다. 어떤 도움이라도 대단히 감사하겠습니다. 미리 감사드립니다.

이 작동하지 않습니다 클라이언트로드 이벤트

alert(componentID+"~~~~~~~~~~~"+fieldID) 
    var helpContent="#{javascript:getFieldHelp('"+fieldID+"')}" 
    alert(helpContent) 
    $(document).ready(function() 
    { 
    x$("#{id:link_Test}").qtip({   
    //x$(compid).qtip({ 
     content: "helpContent",   
     style: 'qtip-tipsy qtip-shadow' 

     }); 


    }); 

답변

1

에 스크립트 블록

<xp:scriptBlock id="scriptBlock2" 
    value="var fieldID=#{compositeData.fieldID};var componentID=#{compositeData.componentID};"> 
</xp:scriptBlock> 

. ClientSide 변수 'fieldID'를 SSJS (getFieldHelp)에 보내려면이 변수를 서버에 POST해야하기 때문에 Jeremy Hodge.의 ExecuteOnServer 함수와 같은 것을 사용해야합니다.

그런데 왜 당신이 사용하지 말아 :

var helpContent ="#{javascript:getFieldHelp(compositeData.fieldID)}" 

이 getFieldHelp가 SSJS 기능이 모두 코드 조각이 동일한 구성 요소에 있다고 가정. .
내가 CSJS onClientLoad 이벤트에 compositeData.FieldID을 받고에 대한 몇 가지 테스트를했다 : =) 은 (maby 당신이있는 CompositeData를 얻기 위해)

갱신 $에 #을 변경해야합니다.

<xp:scriptBlock> 
    <xp:this.value><![CDATA[XSP.addOnLoad(function(){ 
      alert("#{javascript:return compositeData.fieldId}"); 
      });]]></xp:this.value> 
</xp:scriptBlock> 

나는 CSJS (onClientLoad)을 실행하기 위해 XSP.addOnLoad()을 사용하고 xp:scriptBlock 안에 내가 클라이언트 측에 CompositeData에 전달할 수 있습니다 : 내가 뭘 생각 해낸 것은 이것이다.

+0

마이클 감사합니다. XSP.addOnLoad에서 코드를 추가하면 모든 것이 잘 작동합니다. 다시 한번 감사합니다. 호기심에서, "#"& "$"사이의 차이점은 compositeData가됩니다. – gkreddy

+0

당신을 환영합니다. 질문 : SSJS 용 코드 창을 열면 동적 또는 페이지로드시를 선택할 수 있습니다. #은 동적 인 것을 나타내고 $는 onPageLoad를 나타냅니다. –