Доступ ко второму экземпляру Orbeon xforms - PullRequest
2 голосов
/ 20 января 2012

Следуя документации Orbeon о запуске xforms-with-java-application , Я развернул военный файл Орбеона отдельно от моей Java-войны на JBoss.

Я пытался создать 2 экземпляра внутри одной модели

<xforms:model id="fr-form-model">


  <xforms:instance id="don-instance1">
    <don>
     <laptop>                   
 </laptop>
    </don>
  </xforms:instance> 

  <xforms:instance id="don-instance2">
    <don2>
       <laptop2>                    
   </laptop2>
    </don2>
  </xforms:instance>

</xforms:model id="fr-form-model">

Я не могу получить доступ ко второму экземпляру xforms из

<xforms:input ref="instance('don-instance')/don/laptop2">
   <xforms:label>Enter a Name:</xforms:label>   
</xforms:input>

Доступ к первому экземпляру xforms нормален, если я не использую функцию instance ()

<xforms:input ref="/don/laptop">
   <xforms:label>Enter a Name:</xforms:label>    
</xforms:input>

Почему-то метод instance () работает не так, как я ожидаю. Чего мне не хватает?

Пересмотренный полный XML:

    <xhtml:html
            xmlns:xhtml="http://www.w3.org/1999/xhtml"      
            xmlns:xforms="http://www.w3.org/2002/xforms"
            xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
            xmlns:ev="http://www.w3.org/2001/xml-events"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
            >

        <xhtml:head>
            <xhtml:title>Simple</xhtml:title>

            <xforms:model >

                <xforms:instance id="don-instance1">
                    <don1>
                        <laptop1>
                        </laptop1>
                    </don1>
                </xforms:instance>

                 <xforms:instance id="don-instance2">
                    <don2>
                        <laptop2>                   
                        </laptop2>
                    </don2>
                </xforms:instance> 

                <xforms:submission id="submit_metadata" action="../processor.jsp" method="post"/>

            </xforms:model>
        </xhtml:head>

        <xhtml:body>


            <xforms:input ref="instance('don-instance1')/don1/laptop1">
                <xforms:label class="composers-label">Laptop1: </xforms:label>                                      
                <xhtml:br />                                        
            </xforms:input>

            <xforms:input ref="instance('don-instance2')/don2/laptop2">
                <xforms:label class="composers-label">Laptop2: </xforms:label>                                      
                <xhtml:br />                                        
            </xforms:input>

            <xhtml:br />
            <xhtml:br />


            <xforms:submit submission="submit_metadata">
                <xforms:label class="composers-label">Submit</xforms:label>
            </xforms:submit>
            <xhtml:br />

            <fr:xforms-inspector/>

        </xhtml:body>
    </xhtml:html>

1 Ответ

1 голос
/ 20 января 2012

Согласно коду, я вижу, что вы не ссылаетесь на имена узлов должным образом. Если вы хотите получить доступ к узлу ноутбука в первую очередь, тогда ваш код должен выглядеть следующим образом:

<xforms:input ref="instance('don-instance1')/laptop">
   <xforms:label>Enter a Name:</xforms:label>   
</xforms:input>

Точно так же, если вы хотите получить доступ к узлу во втором экземпляре, он должен быть

<xforms:input ref="instance('don-instance2')/laptop2">
   <xforms:label>Enter a Name:</xforms:label>   
</xforms:input>
...