2010-06-25 1 views
2

저는 form1에 쿼리 문자열 매개 변수 (param1)를 form2에 전달했습니다. form1에서 param1 = true를 전달합니다. 양식 2에서 param1의 값을 로컬 인스턴스로 설정하려고합니다. 폼 1에서 param1을 전달하지 않으면 param1의 값을 false로 만들기 위해 form2를 사용합니다. 여기에 내 인스턴스입니다.XForms : nodeset 바인딩에서 calculate 및 xxforms : default 특성 사용

<xforms:instance id="querystring-instance"> 
    <query-string> 
     <param1></param1> 
    </query-string> 
</xforms:instance> 

다음 줄을 사용하여 param1의 값을 쿼리 문자열에서 가져 와서 설정하고 있습니다. 쿼리 문자열에 param1이 없으면 기본값 인 false를 사용하려고합니다.

<xforms:bind nodeset="instance('querystring-instance')/param1" calculate="xxforms:get-request-parameter('param1')" xxforms:default="false()" /> 

이것은 작동하지 않습니다. param1이 있으면 작동하고 querystring-instance의를 true로 설정합니다. param1이 없으면 아무 것도 설정하지 않습니다. 나는 그것이 거짓으로 설정되기를 원한다. 어떻게해야합니까?

답변

2

초기화시에만 매개 변수를 설정하려고하므로 calculate 대신 xxforms:default을 사용하십시오. calculate은 각각의 XForms 재 계산에서 평가 될 것이며, 이는 xxforms:get-request-parameter()이 XForms 초기화 중에 만 사용 가능하기 때문에 실패합니다.

XPath에서 조건을 구현할 수 있습니다.

xxforms:get-request-parameter() 매개 변수가없는 경우 빈 시퀀스가 ​​반환됩니다. 이 작업을해야합니다 : 이것은 무엇을

<xforms:bind nodeset="instance('querystring-instance')/param1" 
      xxforms:default="(xxforms:get-request-parameter('param1'), 'false')[1]"/> 

xxforms:get-request-parameter() 빈 시퀀스를 반환하는 경우, 다음 시퀀스의 첫 번째 값이 '거짓'이 될 것입니다, 그 값을 설정하는 데 사용됩니다거야.

+0

감사합니다. 그것은 작동합니다. – Purni