Orbeon 2018.1 fr-error-summary-рендеринг проблема - PullRequest
0 голосов
/ 12 сентября 2018

Может показаться, что при рендеринге глобальных ошибок в Orbeon 2018.1 возникает проблема рендеринга с fr-error-summary:

<xhtml:table width="100%">
  <xhtml:tr>
    <xhtml:td>
     <fr:error-summary observer="generalTab" id="error-summary">
       <fr:label ref="$resources/please-handle-validation-errors"/>
       <fr:errors nodeset="instance('errors')/error">
         <fr:label ref="label"/>
         <fr:alert ref="alert"/>
       </fr:errors>
     </fr:error-summary>
   </xhtml:td>
 </xhtml:tr>
</xhtml:table>

Это приводит к следующему рендерингу:

<li id="repeat-end-error-summary≡xf-2268" class="xforms-repeat-begin-end"></li>
<span id="error-summary≡xf-2272" class="xforms-group">...</span>
<table width="100%">...</table>

<span> содержит все ошибки, а <table> содержит только метку fr: as <legend>

Я добавил код рядом с нашей продукциейсервер на Orbeon 3.9 и мой тест с использованием Orbeon 2018.1 Orbeon 2018.1 left and Orbeon 3.9 right

Включен простой xform для воспроизведения с.

<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:fr="http://orbeon.org/oxf/xml/form-runner">
    <xh:head>
        <xh:title>orbeon-2018-1-fr-error-summary-rendering-issue</xh:title>
        <xf:model id="repro">
            <xf:instance id="test">
                <test>SUCCESS</test>
            </xf:instance>
            <xf:bind nodeset="instance('test')" constraint=". = 'SUCCESS'"/>
            <xf:action ev:observer="test" ev:event="xxforms-value-changed">
                <xf:setvalue ref="instance('data-safe')">false</xf:setvalue>
                <xf:dispatch name="fr-visit-all" targetid="error-summary"/>
                <xf:refresh/>
                <xf:dispatch name="fr-update" targetid="error-summary"/>
                <xf:dispatch name="fr-visit-all" targetid="error-summary-global"/>
                <xf:refresh/>
                <xf:dispatch name="fr-update" targetid="error-summary-global"/>
            </xf:action>
        </xf:model>
    </xh:head>
    <xh:body>
        <xh:h3>TEST</xh:h3>
        <xf:group model="repro" id="validationArea">
            <xf:input ref="instance('test')" incremental="true">
                <xf:label>Enter any value other than SUCCESS to trigger an alert</xf:label>
                <xf:alert>You SHALL have SUCCESS</xf:alert>
            </xf:input>
        </xf:group>
        <xh:table>
            <xh:tr>
                <xh:td>
                    <fr:error-summary observer="validationArea" id="error-summary">
                        <fr:label>Without global errors</fr:label>
                    </fr:error-summary>
                </xh:td>
            </xh:tr>
        </xh:table>
        <xh:table>
            <xh:tr>
                <xh:td>
                    <fr:error-summary observer="validationArea" id="error-summary-global">
                        <fr:label>With global errors</fr:label>
                        <fr:errors nodeset="instance('errors')/error">
                            <fr:label ref="label"/>
                            <fr:alert ref="alert"/>
                        </fr:errors>
                    </fr:error-summary>
                </xh:td>
            </xh:tr>
        </xh:table>
    </xh:body>
</xh:html>

1 Ответ

0 голосов
/ 13 сентября 2018

Хорошо, после еще нескольких копаний выясняется, что самый простой способ обойти эту ошибку - удалить эту часть из форм:

<fr:errors nodeset="instance('errors')/error">
    <fr:label ref="label"/>
    <fr:alert ref="alert"/>
</fr:errors>

После удаления этой части, сводка ошибок отображается как задокументировано. Это будет означать, что конкретно глобальные ошибки рендеринг нарушен.

Поведение в 2017.2 и 2018.1 такое же, поэтому оно должно быть нарушено между 3.9 и 2017.2.

...