Как сделать пользовательский элемент управления на основе динамического выпадающего списка данных в Orbeon Form Builder

У меня есть другая проблема. Я хочу создать новый пользовательский элемент управления, почти такой же, как Dynamic Data Dropdown. Разница в том, что пользователь вместо того, чтобы вводить данные управления, выглядит так:

должен пройти только

  • Словарь - ABCDE

а остальные URL и другие данные должны быть по умолчанию и запомнены в элементе управления. Таким образом, вместо 4 полей ввода (url, item, label, value) должно быть только 1 (словарь). Я уже понял, как удалить эти поля ввода и добавить то, что я хочу:

Я просто заменил эту часть кода:

                <xf:input ref="@resource">
                    <xf:label lang="en">Resource URL</xf:label>
                    <xf:label lang="es">URL del Recurso</xf:label>
                    <xf:label lang="fi">Resurssi URL</xf:label>
                    <xf:label lang="fr">URL de la ressource</xf:label>
                    <xf:label lang="ru">URL ресурса</xf:label>
                    <xf:label lang="it">URL della risorsa</xf:label>
                    <xf:label lang="de">URL der Ressource</xf:label>
                    <xf:label lang="sv">Resursens adress</xf:label>
                    <xf:label lang="nl">Resource URL</xf:label>
                    <xf:label lang="pt">URL do Recurso</xf:label>
                    <xf:hint lang="en">HTTP URL returning data used to populate the dropdown</xf:hint>
                    <xf:hint lang="es">HTTP URL retornando datos para poblar la lista</xf:hint>
                    <xf:hint lang="fi">HTTP URL palauttaa pudotusvalikon täyttämiseen käytettyä dataa</xf:hint>
                    <xf:hint lang="fr">URL HTTP auquel réside le service</xf:hint>
                    <xf:hint lang="ru">HTTP URL сервиса, данными из которого будет заполнен выпадающий список</xf:hint>
                    <xf:hint lang="it">URL HTTP che da i dati per il menu a tendina</xf:hint>
                    <xf:hint lang="de">HTTP URL die die Inhalte für das Dropdown-Menü liefert</xf:hint>
                    <xf:hint lang="sv">Vanligen en Internetadress som börjar med http://</xf:hint>
                    <xf:hint lang="nl">HTTP URL als bron voor de gegevens in de selectie</xf:hint>
                    <xf:hint lang="pt">HTTP URL devolvendo dados para preencher a lista de opções</xf:hint>
                </xf:input>
                <xf:input ref="xf:itemset/@ref">
                    <xf:label ref="$resources/dialog-actions/items/label"/>
                    <xf:hint ref="$resources/dialog-actions/items/hint"/>
                </xf:input>
                <xf:input ref="xf:itemset/xf:label/@ref">
                    <xf:label ref="$resources/dialog-actions/item-label/label"/>
                    <xf:hint ref="$resources/dialog-actions/item-label/hint"/>
                </xf:input>
                <xf:input ref="xf:itemset/xf:value/@ref">
                    <xf:label ref="$resources/dialog-actions/item-value/label"/>
                    <xf:hint ref="$resources/dialog-actions/item-value/hint"/>
                </xf:input> 

с этим:

<xf:input ref="@resource">
                    <xf:label lang="en">Dictionary</xf:label>

                    <xf:hint lang="en">Dictionary returning data used to populate the dropdown</xf:hint>
                </xf:input>

И теперь я понятия не имею, как хранить значения по умолчанию, которые должны быть запомнены, и как связать их с методами, чтобы он мог извлекать элементы из URL в мой элемент управления раскрывающимся списком. Пожалуйста помоги

1 ответ

Хорошо, я сделал что-то вроде этого:

<xbl:xbl 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:xxf="http://orbeon.org/oxf/xml/xforms"
         xmlns:my="http://www.example.com/"
         xmlns:saxon="http://saxon.sf.net/"
         xmlns:fb="http://orbeon.org/oxf/xml/form-builder"
         xmlns:xbl="http://www.w3.org/ns/xbl"
         xmlns:xxbl="http://orbeon.org/oxf/xml/xbl">

    <metadata xmlns="http://orbeon.org/oxf/xml/form-builder">
        <display-name lang="en">Custom Controls</display-name>
    </metadata>

    <xbl:binding id="my-dictionary-selector" element="my|dictionary-selector" xxbl:mode="lhha binding value">
        <fb:metadata>
            <fb:display-name lang="en">Dictionary Selector</fb:display-name>
            <fb:icon lang="en">
                <fb:small-icon>/forms/orbeon/builder/images/dropdown.png</fb:small-icon>
                <fb:large-icon>/forms/orbeon/builder/images/dropdown.png</fb:large-icon>
            </fb:icon>
            <fb:template>
                <my:dictionary-selector>
                    <xf:label ref=""/>
                    <xf:hint ref=""/>
                    <xf:help ref=""/>
                    <xf:alert ref=""/>
                        <xf:itemset ref="()">
                            <xf:label ref="()"/>
                            <xf:value ref="()"/>
                        </xf:itemset>
                </my:dictionary-selector>
            </fb:template>
            <fb:control-details>
                <xf:input ref="@resource" name="aa">
                    <xf:label lang="en">Dictionary</xf:label>
                    <xf:hint lang="en">Dictionary name returning data used for the suggestions</xf:hint>
                </xf:input>
            </fb:control-details>
        </fb:metadata>
        <xbl:template>
            <xf:select1 appearance="minimal" ref="xxf:binding('my-dictionary-selector')">
                <xf:item>
                    <xf:label>[Select...]</xf:label>
                    <xf:value/>
                </xf:item>
                <xf:itemset nodeset="doc('http://localhost:8080/OrbeonForm/resources/dictionaries/colors')/collection/dictionary">
                    <xf:label ref="key"/>
                    <xf:value ref="value"/>
                </xf:itemset>
            </xf:select1>
        </xbl:template>
    </xbl:binding>


</xbl:xbl>

и это работает (принимает значения из заданного XML), но теперь я хочу дать пользователю возможность выбрать имя словаря. Таким образом, в URL к файлу xml ( http://localhost:8080/form/resources/dictionaries/colors) вместо цветов я хочу вставить строку, которую пользователь вставил в словарь, в элементах управления. Как мне этого добиться? Это изменит раскрывающийся список после того, как пользователь нажмет кнопку "применить" в элементах управления?

Другие вопросы по тегам