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

时间:2012-12-20 13:59:58

标签: xpages

使用复选框组时,XPage会在其周围生成fieldsettable个标记。有没有办法生成它?对于例如如果我的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>

这是三个复选框的很多代码。它会弄乱我的CSS,因为为table标记添加任何CSS也会将它放在复选框组中。也适用于单选按钮组。我尝试将disableTheme属性设置为true,但这也无效。

2 个答案:

答案 0 :(得分:3)

如果要从根本上更改组件的HTML表示结构,可以使用Extensibility API create an alternate renderer。这使您可以完全控制为特定组件实例发送到浏览器的标记,而无需更改任何其他组件的呈现方式。使用与默认渲染器(component-family)相同的javax.faces.SelectMany注册渲染器,但为其指定自定义renderer-type;如果您随后将该自定义值分配给特定复选框组的rendererType属性,Domino将使用您的自定义渲染器类来发出HTML而不是默认的渲染器类。

答案 1 :(得分:1)

您还可以使用xp:radio控件而不是xp:radioGroup控件,然后使用groupName属性对多个单选按钮进行分组。从xp:radio呈现的单选按钮不包含fieldset和table。