2011-02-25 11 views
12

Quiero alinear a la derecha un valor outputText (es decir. Fee.TableAmount a continuación) y que quieren mantener la cabecera para esa columna centrada. ¿Qué parámetro tengo que pasar a outputText a continuación para lograr esto?derecho alinear contenido de la celda en una columna de tabla de datos

<h:dataTable> 
    ... 
    (other columns) 
    ... 
    <h:column headerClass="columnCenter"> 
     <f:facet id="header_agency" name="header"> 
      <h:outputText value="Amount"/> 
     </f:facet> 
     <h:outputText value="#{fee.tableAmount}"> 
      <f:convertNumber maxFractionDigits="2" groupingUsed="true" 
       currencySymbol="$" type="currency" /> 
     </h:outputText> 
    </h:column> 
</h:dataTable> 

Respuesta

18

Puede usar el atributo columnClasses de <h:dataTable> para especificar clases de CSS en todas las celdas de la misma columna. Puede pasar una cadena separada por comas de nombres de clase.

<h:dataTable columnClasses="column1,column2,column3"> 

Lo anterior renders <td class="column1"> para la primera columna, <td class="column2"> para la segunda y así sucesivamente. Esto le permite externalizar y normalizar los estilos.

Imagine que tiene 4 columnas y la primera, segunda y cuarta columna no necesita tener un estilo especial y que sólo la tercera columna debe estar alineado a la derecha, y luego hacerlo

<h:dataTable columnClasses="none,none,right,none"> 

en combinación con

td.right { 
    text-align: right; 
} 

que es semánticamente más correcta y técnicamente más robusto que un float: right;.

+1

Es cierto, pero curiosamente para el ' ...' encabezados de la tabla parece uno sólo puede especificar la clase [en '' en lugar] (http: //docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/h/column.html). Entonces: las clases de CSS para la columna * data * se toman de '' como se describe arriba, y el CSS para la columna * encabezados * de cada ''. – Arjan

+1

@Arjan: El [ '' ] (http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/h/dataTable.html) tiene también un atributo 'headerClass'. Consulte también la sección "Representación del encabezado" de la documentación de etiqueta anteriormente mencionada. – BalusC

+1

Sí, pero eso se aplica a todos los encabezados de columna, y no es una lista separada por comas para una clase específica para una columna específica, [es que] (http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/h/dataTable.html)? – Arjan

0

Acabo de añadir style = "float: right" para cualquier otra persona que quiera saber.

<h:outputText style="float:right" value="#{fee.tableAmount}"> 
    ... 
</h:outputText> 
2

Como usted ha dicho, si se define un float: right directamente en su <h:outputText>, así:

<h:outputText style="float: right;" value="#{fee.tableAmount}"/> 

entonces se hará nido su texto en un <span> que luego se mueve hacia la derecha.

Desafortunadamente, el componente <h:column> no proporciona una forma de especificar la clase CSS de la propia columna. Sin embargo, en caso de que esté utilizando otro componente para su mesa, tales como los RichFaces <rich:column>, no hay otra solución es especificar lo siguiente: en primer lugar, establece una clase CSS:

.textOnRight { 
    text-align: right; 
} 

A continuación, asigne esta clase CSS a la columna:

<rich:column styleClass="textOnRight" headerClass="columnCenter"> 
    <f:facet name="header"> 
     <h:outputText value="Amount"/> 
    </f:facet> 
    <h:outputText value="#{fee.tableAmount}"> 
     <f:convertNumber maxFractionDigits="2" groupingUsed="true" 
      currencySymbol="$" type="currency" /> 
    </h:outputText> 
</rich:column> 

por cierto, el establecimiento de un id en su <f:facet> no hace nada, ya que este atributo no está a cargo de este componente.

Cuestiones relacionadas