2014-12-23 9 views
0

양식을 게시 한 후 양식을로드 한 후 웹 서비스를 호출하고 싶습니다. 나는 내가 가지고있는 경우, 그것을 사용자 정의 XBL 컨트롤을 만든 :하지만이 작동하지 않습니다이벤트 xforms-model-construct-done 동작

<xf:group id="component-group"> 
    <xf:action ev:event="xforms-enabled" ev:target="component-group"> 
     <xf:send ev:event="xforms-enabled" submission="my-submission"/> 
    </xf:action> 
</xf:group> 

예상 : 나는 FormBuilder에 새로운 요소를 추가하거나 다른 컨트롤의 이름을 변경할 때 내 제출이 매번 전송 . 일반적으로 말하기는 양식이 어떤 식 으로든 바뀌면 제출됩니다.

이제는 양식을 게시 할 때 누군가 제출하기 만하면됩니다. FormBuilder에서 "Test"를 누르면 다른 사람이 양식을 열어서 공개하지만, 게시 후 양식을 작성하는 것과 같을 것입니다.

나는 이런 식으로 뭔가를 시도했다 :

<xf:group id="component-group"> 
    <xf:action ev:event="xforms-model-construct-done" ev:target="component-group"> 
     <xf:send ev:event="xforms-model-construct-done" submission="my-submission"/> 
    </xf:action> 
</xf:group> 

를 불행히도 작동하지 않습니다,이 방법 제출이 전혀 전송되지 않습니다. 이견있는 사람 ?

답변

1

이것은 디자인 타임에 XBL 구성 요소가 live이기 때문에 발생합니다. 따라서 컴포넌트가 Form Builder 내에서 실행 중인지 여부를 테스트 할 방법이 필요합니다.

실제로이 기능이 있어야하지만 그렇지 않습니다 (이 기능을 API에 추가해야하는 기능 목록에 추가했습니다 (here). 당신은 할 수 있습니다 :

<xf:group id="component-group"> <xf:var name="fr-params" value="xxf:instance('fr-parameters-instance')"/> <xf:action event="xforms-enabled" target="component-group" if="not($fr-params/app = 'orbeon' and $fr-params/form = 'builder')"> <xf:send submission="my-submission"/> </xf:action> </xf:group>

몇 가지 사소한 의견 :

  • 당신이 필요하지 않은 중첩 된 행동에 event 특성을 배치 (안 사실)
  • 당신은하지 않습니다 심지어 ev 접두사가 필요합니다
+0

언제나처럼 당신의 답변을 주셔서 감사합니다. 만약 당신이 여분의 시간을 가졌다면 당신이 내 다른 문제를 볼 수 있다면 멋질 것입니다. 이것은 폼 빌더의 저장 버튼에 이벤트를 잡는 것입니다. http://stackoverflow.com/questions/27608979/catching-save-event-in- formbuilder. 내가해야한다고 생각하는 코드가 있지만 어딘가에 약간의 실수가있는 것 같아요. – pzeszko