Я работаю над пользовательским контролем в Orbeon. В конструкторе форм в настройках есть поле с именем buttonName. Его значение должно отображаться как метка кнопки, видимая в бегуне формы.
Я перемещаю старый файл, который предположительно работал на старой версии orbeon. Я попытался изменить способ обращения к значению из конструктора форм. Ниже я показываю старый код, без моих изменений.
В метаданных построителя форм я объявил ввод с помощью ref:
<xbl:binding element="fr|custom-input" id="fr-custom-input-binding" xxbl:mode="lhha binding value">
<!-- Orbeon Form Builder Component Metadata -->
<metadata xmlns="http://orbeon.org/oxf/xml/form-builder" xmlns:xf="http://www.w3.org/2002/xforms">
...
<control-details>
<xf:input ref="@buttonName">
...
Далее к этой привязке есть var
<xf:var name="binding" value="xxf:binding('fr-custom-input-binding')"/>
Наконец, ссылка в форме бегуна:
<xf:trigger class="xbl-fr-custom-input-trigger">
...
<xf:label value="$binding/@buttonName"></xf:label>
</xf:trigger>
<control-details>
, больше не отображается в деталях управления в новых версиях Orbeon Forms? Если да, то какую версию Orbeon Forms вы имеете в виду? - person avernet   schedule 13.05.2019buttonName
в<fr:custom-input>
в источнике вашей формы? Если нет, то есть ли атрибут, даже если он пустой? Я подозреваю, что это не работает для вас из-за #4030, который исправлено и будет в Orbeon Forms PE 2018.2.3 или Orbeon Forms CE 2019.1. Вы используете Orbeon Forms CE или PE? - person avernet   schedule 15.05.2019<fr:custom-input buttonName="Your value">
в источнике формы. Это хорошо. Тогда я бы предположил, что использование$binding/@buttonName
в вашем компоненте XBL сработало бы. Можете ли вы попробовать указать исходный код компонента<xf:output value="'gaga'"/>
, проверьте, видите ли вы гадость, если это работает, замените'gaga'
наexists($binding)
, если это возвращает true, замените его наexists($binding/@buttonName)
, если это возвращает true, замените его на$binding/@buttonName
. Давайте посмотрим, сможем ли мы таким образом выяснить, где он терпит неудачу. - person avernet   schedule 16.05.2019exists($binding/@buttonName)
возвращает ложь - person MiKk   schedule 16.05.2019<fr:custom-input buttonName="Your value">
, а не к элементу, к которому привязан элемент управления, на который указывает$binding
. Так что$binding/@buttonName
здесь не подходит. Итак, вместо этого то, что вы хотите иметь внутри своего<xbl:template>
и<xf:var name="buttonName" xbl:attr="xbl:text=buttonName"/>
. Затем вы можете ссылаться в XPath на значение атрибута как$buttonName
. Вы дайте мне знать, если это сработает для вас. - person avernet   schedule 17.05.2019