如何在没有标签的情况下向XPages控件添加属性?

Mal*_*lin 0 xpages

对于xp:inputtext控件我想添加属性[aria-required ='true'],但我想知道如何通过attributes属性实现这一点而无需设置标签?

我试过了:

<xp:this.attrs>
    <xp:attr>
        <xp:this.value><![CDATA[[aria-required='true']]]></xp:this.value>
    </xp:attr>
</xp:this.attrs>
Run Code Online (Sandbox Code Playgroud)

但后来我得到了错误信息:

说明资源路径位置类型xp:attr的必需属性"name"不存在.

shi*_*lem 7

我不确定我是什么意思"无需设置标签". <xp:attrs>拥有一个或多个<xp:attr>组件的集合.然后该<xp:attr>组件包含2个属性name=(仅限String)和value=(仅限String).

因此,如果要为HTML对应标记设置自定义属性,则必须编写:

<xp:inputText ...>
    <xp:this.attrs>
        <xp:attr name="aria-required" value="true" />
    </xp:this.attrs>
</xp:inputText>
Run Code Online (Sandbox Code Playgroud)

如果您希望自动化某些属性的存在,您还可以定义主题规则并应用它(当然,如果您通常将其他样式和/或规则应用于输入,则必须确保在新的中再次重复它们规则):

主题规则

<control>
    <name>Input.AriaRequired</name>
    <property>
        <name>attrs</name>
        <complex type="xp_attr">
            <property>
                <name>name</name>
                <value>aria-required</value>
            </property>
            <property>
                <name>value</name>
                <value>true</value>
            </property>
        </complex>
    </property>
</control>
Run Code Online (Sandbox Code Playgroud)

带有应用主题的输入

<xp:inputText themeId="Input.AriaRequired" ... />
Run Code Online (Sandbox Code Playgroud)