如何覆盖p:selectOneRadio默认图标

时间:2014-02-10 12:09:22

标签: css jsf primefaces override jsf-2.2

我有以下p:selectOneRadio

  <p:outputPanel id="customPanel">  

         <p:selectOneRadio id="customRadio" value="#{dyna.selecetedlist}" layout="grid" columns="1">  
           <c:forEach var="list" items="#{dyna.userlist}" varStatus="loop">
                   <f:selectItem  itemEscaped="true" itemLabel="#{list.id.tbCode}" itemValue="#{list.id.tbCode}" />  
           </c:forEach>
           <p:ajax update=":form1:tabexam,:form1:msg,:form1:colser" listener="#{dyna.updatecolumns}"/>
          </p:selectOneRadio>  

   </p:outputPanel>

生成这个:

enter image description here

我想要的是覆盖p:selectOneRadio的默认图标和布局。 并在下面呈现它:

enter image description here

1 个答案:

答案 0 :(得分:2)

要自定义图标,请覆盖页面上的.ui-radiobutton-icon(有一个更清晰的选项,包括正确打包的css文件):

 <style type="text/css">
   .ui-radiobutton-icon{
       background: url(imgs/icon.png) no-repeat; !important;
   }
 </style>

编辑:覆盖

  • .ui-state-hover类覆盖组件的默认悬停样式
  • .ui-state-active clasas覆盖组件的默认选定样式

注意覆盖上面列出的两个类都会影响该页面上的所有组件。重写时务必使用自定义命名空间。举个例子

 .my-custom-ns .ui-state-hover{
  //css
  }

然后在您的组件定义中:

  <p:selectOneRadio id="customRadio" value="#{dyna.selecetedlist}" styleClass="my-custom-ns" layout="grid" columns="1">  
       <c:forEach var="list" items="#{dyna.userlist}" varStatus="loop">
               <f:selectItem  itemEscaped="true" itemLabel="#{list.id.tbCode}" itemValue="#{list.id.tbCode}" />  
       </c:forEach>
       <p:ajax update=":form1:tabexam,:form1:msg,:form1:colser" listener="#{dyna.updatecolumns}"/>
      </p:selectOneRadio>