如何使用预定义的可见性,控件名称,默认值创建Orbeon自定义控件XBL?

时间:2016-09-05 09:51:01

标签: xpath orbeon xforms formbuilder xbl

我创建了一个自定义控件(带有一些预定义值的隐藏文本框),我想在visibility=false()文件中设置controlName="Mycustom"default value="This is my custom control"XBL。因此,每当我们使用Orbeon Form Builder中的自定义控件时,它将带有所有默认值,无需设置任何内容。

XBL:

<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:ev="http://www.w3.org/2001/xml-events"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
         xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
         xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
         xmlns:saxon="http://saxon.sf.net/"
         xmlns:xbl="http://www.w3.org/ns/xbl"
         xmlns:exf="http://www.exforms.org/exf/1-0"
         xmlns:xxbl="http://orbeon.org/oxf/xml/xbl">

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

    <xbl:binding id="fr-custom" element="fr|custom" >
        <metadata xmlns="http://orbeon.org/oxf/xml/form-builder">
            <display-name lang="en">My Custom Control</display-name>
            <icon lang="en">
                <small-icon>/forms/orbeon/builder/images/input.png</small-icon>
                <large-icon>/forms/orbeon/builder/images/input.png</large-icon>
            </icon>
            <templates>
                <bind xxf:whitespace="trim"/>
                <view>
                    <xf:input id="myCustom" ref="" xmlns="">
                       <xf:label>My Custom lable</xf:label>
                        <xf:hint ref=""/>
                        <xf:help ref=""/>
                        <xf:alert ref=""/>
                    </xf:input>
                </view>
            </templates>
        </metadata>
    </xbl:binding>
</xbl:xbl>

使用上述控件我想要隐藏文本框value='This is my custom control',其控件名称应为Mycustom

  

更新

我尝试了以下更改,但它无法正常工作

        <templates>
            <bind xxf:whitespace="trim" relevant="false()" xxf:default="'This is my custom control'"/>
            <view>
                <xf:input id="myCustom" ref="" xmlns="">
                   <xf:label>Success Message</xf:label>
                    <xf:hint ref=""/>
                    <xf:help ref=""/>
                    <xf:alert ref=""/>
                </xf:input>
            </view>
        </templates>

现在上面的更改正在运行(控件隐藏了一些默认值)。

请你告诉我如何放置条件 properties-local.xml:

 <property as="xs:string"  name="oxf.fr.detail.process.save-final-custom.*.*">
            require-uploads
            then validate-all
            then save
            if({xxf:instance('fr-form-instance')//customMessage} != null)
              {
                then success-message(message = "{xxf:instance('fr-form-instance')//customMessage}")
              }
            recover error-message("database-error") 
     </property>

如果从备份中正确配置,我想覆盖此成功消息。如果它的值为null,则想要显示OOTB消息(不要覆盖)。

  

UPDATE2

Hybris的综合变化。以下是我在Hybris所做的改变

  • 创建XBL > orbeon > custom > custom.xbl

<bind xxf:whitespace="trim" relevant="false()" xxf:default="'This is my custom control'"/>

问题: - 当我们选择自定义控件时,它将绑定而没有任何标签/消息/可见性等。但是如果我刷新左控制面板然后标签开始出现在表单上。但仍未设置默认消息。

1 个答案:

答案 0 :(得分:1)

让我们逐一采取您提到的项目:

  1. visibility="false()" - 我想你是指XForms中的relevant属性,而不是visibility属性。 (表单构建器称之为“可见性”,因为它就是这样,但在XForms中,属性为relevant。)这可以通过在<templates> a <bind relevant="false()"/>内部来完成。
  2. controlName="Mycustom" - 您无法在XBL中设置控件的ID。 (顺便说一句,当使用表单生成器时,XForms id是从表单生成器中表单作者定义的控件名称推断出来的。)id由谁使用控件设置,而不是任何人定义它,否则,对于一个,这将阻止你在表单中拥有该控件的多个实例。
  3. default value="This is my custom control" - 与上面的#1一样,您可以使用<bind xxf:default="'This is my custom control'">执行此操作。请注意添加的单引号,因为xxf:default的值是XPath表达式。