Может показаться, что при рендеринге глобальных ошибок в 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
Включен простой 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>