2012-01-24 8 views
0

私は奇妙な欠陥に遭遇しました。 TomcatでOrbeon 3.9 CEを使用しています。テキストフィールド値= 'true'に応じて、リンクはスクリーンショットのように表示されます。トリガは、表示と非表示のための "データセーフ"インスタンスを参照してください。Orbeon:他のインスタンスに対してモデルの位置に応じてフォームリンクに影響を及ぼすreadonyインスタンス

<xforms:trigger appearance="minimal" ref=".[instance('data-safe')/data-safe='true']"> 
    <xforms:label> 
     Add 
    </xforms:label> 
</xforms:trigger> 

これは画面の表示方法です。
expected functionality

今、パフォーマンスの改善の一環として、私は属性xxforms:readonly="true"

1st instance read-only

とインスタンスのいずれかを持ってここで第一のインスタンスは読み取り専用

で、フォームには、変更内容を表示以下のようにします。ここで、追加リンクは無効になります。 add link disabled

ここで、モデルの1番目の位置から次のどこかに読み込みインスタンスの順序を変更するとします。以下のような追加のリンクが有効になりますここで
expected functionality

あなたは<xforms:trigger ref=".[some condition]">を書くときとき、あなただけのトリガーを隠していない問題に

<xhtml:head> 

    <xhtml:title>SO question</xhtml:title> 
    <!-- CSS StyleSheet test--> 

    <!-- Link to the Model goes Here --> 
    <!-- Needs exslt to do some fancy things with Dates and Time --> 
    <xforms:model id="model"> 

     <!-- --> 
     <!-- Places Instances Here --> 
     <!-- --> 


     <xforms:instance id="dropdown-values" src="oxf:/apps/TSDM/global_instances/Dropdown-Values.xml" xxforms:readonly="true"/> 

     <xforms:instance id="form-attributes"> 
      <attributes> 
       <form-global> 
        <current-page>1</current-page> <!-- Always starts on 1 --> 
        <previous-page></previous-page> <!-- Always starts on 1 --> 
        <next-page></next-page> <!-- Always starts on 1 --> 
        <first-page>1</first-page> <!-- First Page Boundary: 1 always --> 
        <last-page>12</last-page> <!-- Last Page Boundary: Change based on form --> 
        <summary>false</summary> <!-- Enable Summary View indicator --> 
       </form-global> 
      </attributes> 
     </xforms:instance> 

     <xforms:instance id="data-safe"> 
      <flag> 
       <data-safe>true</data-safe> 
       <data-safe1></data-safe1> 
      </flag> 
     </xforms:instance> 

    <xforms:bind id="group-level-specifications-credit-effective-end-date" nodeset="instance('data-safe')/data-safe" 
        calculate="." 
        readonly="false()"/> 


    <!--xforms:bind nodeset="instance('data-safe')/data-safe1" type="xforms:date" 
        calculate="months(xforms:dayTimeDuration(../data-safe))" 
        readonly="false()"/--> 

    </xforms:model> 


</xhtml:head> 
<!-- End of Head --> 



<!-- Start of the Body of the Page --> 
<xhtml:body class="MainBODY"> 

    <xforms:switch> 
     <xforms:case> 
      <xforms:trigger appearance="minimal" ref=".[instance('data-safe')/data-safe='true']"> 
       <xforms:label> 
        Add 
       </xforms:label> 

      </xforms:trigger> 
     </xforms:case> 
    </xforms:switch> 
    <xforms:input ref="instance('data-safe')/data-safe" /> 
    <br/> 
    <xforms:input ref="instance('data-safe')/data-safe1" /> 


</xhtml:body> 
+0

@KaipaMSarma私はそれがorbeonバグだと思います。だから、私はxformsタグが必要だとは思わない。 –

答えて

0

を説明するためのコードサンプルで readonly moved below

を示します条件が偽の場合は、.が指しているノードにもバインドしています。コンテキストが変更されるいくつかのコンテナ要素(<xforms:group>、...)の内部にトリガがない限り、コンテキストは最初のインスタンスのルート要素です。トリガーがノードにバインドされている場合:

  1. トリガーはノードが関連性がない場合は表示されません。
  2. ノードが読み取り専用の場合、トリガーは無効として表示されます。

あなたはので、あなたのコード内の<xforms:bind readonly="false()"/>の、この第二のケースではありませんが、あなたは、インスタンス上でxxforms:readonly="true"を入れたときに、そのすべてのノードが読み取り専用としてマークされているため。

解決方法は簡単です。そのインスタンスを2番目のインスタンスとして移動するか、または.ではなく別のXPath式を使用して読み取り専用でない別のノードにバインドします。

+0

私の質問を正しく理解できませんでした。トリガーはその読み取り専用インスタンスにバインドされていません。それ以降のインスタンスはモデルのreadonlyインスタンスです。読み取り専用インスタンスの位置に応じて、他のインスタンスにバインドされたトリガーは読み取り専用として動作します。スクリーンショットを参照してください –

+0

@NaveenBabuこれを再現するためにここで実行できる最小限の例を含めるように質問を編集できますか? – avernet

+0

コードサンプルは既に存在しています。問題の最後の部分は「ここで問題を説明するコードサンプルです」 –

関連する問題