2011-04-04 7 views
21

Soy nuevo en JSF (empecé a conocerlo hace 4 días) y estoy un poco confundido sobre el uso de h: outputText. Sé que es una etiqueta simple, pero en la mayoría de los ejemplos que he visto, se usa para generar texto muy simple (sin necesidad de escaparse), sin i18n. Por ejemplo (tomado de here)¿Se sugiere utilizar h: outputText para todo?

<h:outputText value="Transport" /> 

que podría ser reemplazado por

Transport 

Por lo tanto, me pregunto si estoy perdiendo algo o si la mayoría de los ejemplos que he visto son muy complicadas hasta el punto de la locura.

Respuesta

41

Si está utilizando JSF 2.x con Facelets 2.x en lugar de JSP, ambos son igualmente válidos. Aún más, Facelets envuelve implícitamente el contenido en línea en un componente como se representa por <h:outputText> (en otras palabras, se escapará).

Sólo cuando desea desactivar escapar usando escape="false", o si desea asignar id, style, onclick, etc mediante programación, o si desea utilizar un convertidor (ya sea explícita o implícita a través de converter través forClass), entonces necesita <h:outputText>.

Yo mismo no uso <h:outputText> cuando no es necesario. Sin él, el código fuente se vuelve mejor legible. Puede simplemente alinear EL en texto de plantilla como #{bean.text} en lugar de <h:outputText value="#{bean.text}">. Antes de JSF 2.0, en JSP y Facelets 1.x, esto no era posible y, por lo tanto, el <h:outputText> es obligatorio. Si su IDE da advertencias al respecto, lo más probable es que JSF 1.x esté configurado/pensado.

+1

¡Estas son buenas noticias! No lo sabía Un punto más para JSF. Gracias BalusC! –

+0

Gracias Balus. He estado eliminando esa etiqueta y la aplicación no ha fallado, así que debo usar facelets2 (ya que no estoy usando JSP). Gracias por la info! – Augusto

+0

De nada. Tenga en cuenta que la otra respuesta es técnicamente incorrecta para Facelets. – BalusC

2

El ejemplo que cita está escrito en XHTML, que es XML. Es posible que no se permita un "Transporte" independiente en la posición en la que desea colocarlo, por lo que debe "transformarlo" en xml válido.

IIrc esto lo que se llama facelets y el valor predeterminado en JSF2, mientras que en JSF1, el código de presentación se podía hacer con etiquetas JSP como predeterminadas y facelets era una alternativa que muchos desarrolladores estaban usando).

+0

Dios mío, tienes razón. Perdón por esta pregunta adicional, pero ¿sabes si hay una alternativa? ¿Tal vez para escribir las plantillas en groovy? Es solo que la complejidad extra es asombrosa. – Augusto

0

h: salidaLa etiqueta de texto es necesaria solo si está procesando el texto en función de alguna condición de renderizado. por ejemplo: < h: outputText value = "Transport" rendered = "# {myBean.displayText}"/>. Si es una declaración de salida simple, entonces no hay necesidad de usar la etiqueta; solo podría usar: Transporte

Cuestiones relacionadas