使用复选框组时,XPage会在其周围生成fieldset
和table
个标记。有没有办法不生成它?对于例如如果我的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
,但这也无效。
答案 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。