jsf2 tomahawk selectOneRadio分别渲染标签

时间:2012-11-26 21:08:17

标签: jsf-2

我正在使用Tomahawk radio control来满足我的设计要求。我正在测试,想问一下是否有人回答。

 <t:selectOneRadio id="myRadio" forceId="true" layout="spread" styleClass="field checkbox">
                                    <f:selectItems value="#{personBean.genders}"  />
                                </t:selectOneRadio>
                                <c:forEach items="#{personBean.genders}" varStatus="loop">
                                    <span style="width:80px;" class="checkbox"><t:radio for=":myForm:myRadio"  index="#{loop.index}" /></span>
                                </c:forEach>

HTML生成

<span class="checkbox"><input type="radio" class="field checkbox" value="male" name="myRadio" id="myForm:j_idt35"><label for="myForm:j_idt35"> male</label></span>

问题:

我想在使用复选框呈现的男性上使用class属性。是否可以单独呈现它?

我可以应用如下所示的样式,但我希望Label能够单独渲染以获得更多控制权。

.checkbox label {
    display: block;
    cursor: pointer;
    font-size: 100%;
    line-height: 150%;
    margin: -17px 0 0 18px;
    padding: 0 0 5px 0;
    color: #222;
    width: 88%
}

1 个答案:

答案 0 :(得分:0)

查看源代码no,它不是。

然而,您可以使用+:

设置样式
input[type='checkbox'] + label {
    display: block;
    cursor: pointer;
    font-size: 100%;
    line-height: 150%;
    margin: -17px 0 0 18px;
    padding: 0 0 5px 0;
    color: #222;
    width: 88%
}

如果想要以不同方式呈现它,则需要覆盖HtmlRadioRenderer:

将其放入faces-config.xml

  <renderer>
    <component-family>javax.faces.SelectOne</component-family>
    <renderer-type>org.apache.myfaces.Radio</renderer-type>
    <renderer-class>your-renderer-class</renderer-class>
  </renderer>

创建一个班级your-renderer-class.java,在org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer中覆盖,你就可以了。

在网上了解如何完成此操作:JSF 2.0: How to override base renderers with custom ones?