Xpages 复选框/单选按钮组控制输出中的停止生成表和字段集标记

Xpages 复选框/单选按钮组控制输出中的停止生成表和字段集标记,xpages,Xpages,使用复选框组时,XPage会在其周围生成字段集和表格标记。有没有办法不产生这种情况?例如,如果我的XPage源如下所示- <xp:checkBoxGroup id="checkBoxGroup" disableTheme="true" value="#{document1.CheckboxGroup}"> <xp:selectItems> <xp:this.value><![CDATA[#{javascript:new Array

使用复选框组时,XPage会在其周围生成
字段集
表格
标记。有没有办法不产生这种情况?例如,如果我的XPage源如下所示-

<xp:checkBoxGroup id="checkBoxGroup" disableTheme="true" value="#{document1.CheckboxGroup}">
    <xp:selectItems>
        <xp:this.value><![CDATA[#{javascript:new Array("Option 1", "Option 2", "Option 3");}]]></xp:this.value>
    </xp:selectItems>
</xp:checkBoxGroup>

然后我生成的代码是

<fieldset id="view:_id1:checkBoxGroup">
    <table>
        <tr>
            <td>
                <label><input name="view:_id1:checkBoxGroup" value="Option 1" type="checkbox"> Option 1</input></label>
            </td>
            <td>
                <label><input name="view:_id1:checkBoxGroup" value="Option 2" type="checkbox"> Option 2</input></label>
            </td>
            <td>
                <label><input name="view:_id1:checkBoxGroup" value="Option 3" type="checkbox"> Option 3</input></label>
            </td>
        </tr>
    </table>
</fieldset>

选择1
选择2
选择3

这是三个复选框的大量代码。它把我的CSS搞砸了,因为把
表的CSS也放到了复选框组中。也适用于单选按钮组。我尝试将
disableTheme
属性设置为
true
,但这也不起作用。

如果您想从根本上改变组件的HTML表示结构,可以使用扩展性API来实现。这使您可以完全控制针对特定组件实例向浏览器发送的标记,而无需更改任何其他组件的渲染方式。使用与默认渲染器相同的
组件系列
注册渲染器(
javax.faces.SelectMany
),但为其指定自定义的
渲染器类型
;如果随后将该自定义值指定给特定复选框组的
renderType
属性,Domino将使用自定义呈现器类而不是默认呈现器类来发出HTML。

如果要从根本上更改组件的HTML表示结构,可以使用可扩展性API。这使您可以完全控制针对特定组件实例向浏览器发送的标记,而无需更改任何其他组件的渲染方式。使用与默认渲染器相同的
组件系列
注册渲染器(
javax.faces.SelectMany
),但为其指定自定义的
渲染器类型
;如果随后将该自定义值指定给特定复选框组的
renderType
属性,Domino将使用自定义渲染器类而不是默认的渲染器类发出HTML。

您还可以使用
xp:radio
控件而不是
xp:radioGroup
控件,然后使用
groupName
属性对多个单选按钮进行分组。从xp:Radio渲染的单选按钮没有被字段集和表格包围。

您也可以使用
xp:Radio
控件而不是
xp:radioGroup
控件,然后使用
groupName
属性对多个单选按钮进行分组。xp中呈现的单选按钮:单选按钮周围没有字段集和表格。

我刚刚浏览了您发布的wiki。因此,如果我创建自定义渲染器类并将其注册为
faces config.xml
,那么我可以在
rendertype
属性中使用该类。对吗?请容忍我,因为我对扩展性API还不熟悉。例如,如果在faces配置中指定自定义渲染器类型“cssFriendlyCheckboxGroup”,则在XPage上,在组件的RenderType属性中设置相同的值,而且它将使用您的Java类而不是本机类。谢谢Tim,我能够编写自己的输出,但为了获得选项,我在
encodeBegin
method
XspSelectManyCheckbox chk=(XspSelectManyCheckbox)组件中编写了它;List l=chk.getChildren();对于(int i=0;我刚刚浏览了您发布的wiki。因此,如果我创建自定义渲染器类并将其注册为
faces config.xml
,那么我可以在
rendertype
属性中使用该类。对吗?请耐心等待,因为我是扩展性API的新手。正确。例如,如果在faces配置中您指定了“cssFriendlyCheckboxGroup”,然后在您的XPage上,在组件的renderType属性中设置相同的值,它将使用您的Java类而不是本地类。感谢Tim,我能够编写自己的输出,但为了获得选项,我在
encodeBegin
method
XspSelectManyCheckbox chk=(XspSelectManyCheckbox)组件;List l=chk.getChildren();for(int i=0;iThanks Per,如果扩展性API不起作用,我的另一个选项。谢谢Per,如果扩展性API不起作用,我的另一个选项。