我想在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,进入表单生成器并再次单击新控件,它会插入一个空的新网格框(无输入,标签或提示)。查看表单的来源,它已插入输入(见下文)以及标签和提示资源,只是没有显示。
<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中显示出来?
答案 0 :(得分:0)
为了在运行时自动找到,组件必须放在以XBL组件名称命名的文件夹中。因此,如果您决定为组件命名tutoria-input
,则必须将其放在:
/xbl/orbeon/tutoria-input/tutoria-input.xbl