为什么在更改名称时Orbeon自定义控件教程会停止显示?

时间:2015-12-31 11:02:49

标签: custom-controls orbeon

我想在Orbeon中创建一些自定义控件。在(看似)随机成功之后,我决定回到基础并从Tutorial开始。

阅读完本教程后,我将基本组件XBL复制到一个文件中,将其链接到properties-local.xml,重新启动Tomcat,进入表单生成器并单击新控件,然后插入带有标签的输入并提示表格中的新网格框(yay)。

(这是包含我的工具的properties-local.xml文件的一部分)

<property as="xs:string"  name="oxf.fb.toolbox.group.other.uri.*.*">
  oxf:/xbl/play/slider/slider.xbl
  oxf:/xbl/play/betterInput/betterInput.xbl
  oxf:/xbl/play/sample/sample.xbl
</property>

然后我尝试将元素名称从fr | tutorial-input更改为fr | tutoria-input,如下所示(我认为这是一个很容易的改变)。

<xbl:xbl
    xmlns:xh="http://www.w3.org/1999/xhtml"
    xmlns:xf="http://www.w3.org/2002/xforms"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
    xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
    xmlns:xbl="http://www.w3.org/ns/xbl"
    xmlns:xxbl="http://orbeon.org/oxf/xml/xbl">

    <xbl:binding
        element="fr|tutoria-input"
        id="fr-tutoria-input"
        xxbl:mode="lhha binding value">
        <xbl:template>
            <!-- Input points to the external single-node binding -->
            <xf:input ref="xxf:binding('fr-tutoria-input')"/>
        </xbl:template>
    </xbl:binding>
</xbl:xbl>

之后,重新启动Tomcat,进入表单生成器并再次单击新控件,它会插入一个空的新网格框(无输入,标签或提示)。查看表单的来源,它已插入输入(见下文)以及标签和提示资源,只是没有显示。

empty grid box

<xh:tr>
    <xh:td>
        <tutoria-input xmlns="http://orbeon.org/oxf/xml/form-runner" id="control-19-control"
                       bind="control-19-bind">
            <xf:label ref="$form-resources/control-19/label"/>
            <xf:hint ref="$form-resources/control-19/hint"/>
            <xf:alert ref="$fr-resources/detail/labels/alert"/>
        </tutoria-input>
    </xh:td>
</xh:tr>

我可以将tutoria-input更改回源代码中的tutorial-input(无需更改我的代码),apply,它将显示在表单中,所以显然它正在运行Orbeon附带的代码并使用我失踪的神奇之物。我甚至已经通过源代码来查找所有出现的tutorial-input以查看是否有我遗失的文件。

请问,我错过了什么让我的Tutoria输入自定义控件在Form Builder / Orbeon中显示出来?

1 个答案:

答案 0 :(得分:0)

为了在运行时自动找到,组件必须放在以XBL组件名称命名的文件夹中。因此,如果您决定为组件命名tutoria-input,则必须将其放在:

/xbl/orbeon/tutoria-input/tutoria-input.xbl