2010-02-25 7 views
29

Facelets usa el atributo jsfc para convertir elementos HTML a sus componentes asociados JSF. Esto es bastante útil para el prototipado rápido, ya que le permite crear sus vistas utilizando una herramienta de diseño visual. Sin embargo recientemente he descubierto this entrada del blog de Cay Horstmann donde hace estragos al uso de JSFC junto con componentes complejos, como h: dataTable.¿Debo usar el atributo Facelets "jsfc"?

Esto me alarmó como Cay Horstmann es el autor de varios de mis libros favoritos de Java. Sin embargo, mis habilidades de Google-fu no arrojaron ningún resultado al tratar de determinar el alcance/naturaleza del problema, aparte de una publicación reciente por Ed Burns, que parece gustarle jsfc (y después de todo es la ventaja coexistente para JSF). Entonces mi pregunta es simple, ¿se recomienda usar jsfc con Facelets? y si no, ¿cuál es el problema que introduce?

Respuesta

32

Como dijiste, el atributo jsfc es esencialmente útil cuando tienes que "convertir" un prototipo HTML en una página JSF. Por ejemplo, cuando se tiene un texto de entrada HTML:

<input type="text" .../> 

se puede añadir el atributo jsfc el fin de convertir este componente HTML en un componente JSF:

<input type="text" jsfc="h:inputText" .../> 

Esto es equivalente a escribir la siguiente código JSF:

<h:inputText .../> 

Como se indica en la documentación Facelets here o here, el atributo jsfc también se puede usar para "mapear" componentes Facelets. Por ejemplo, se puede extraer una parte del código HTML:

<span jsfc="ui:remove"> 
This won't be compiled either <h:outputText value="#{foo.bar}"/> 
</span> 

También puede crear una tabla utilizando este atributo:

<table> 
    <tr jsfc="ui:repeat" value="#{dept.employees}" var="emp" class="#{emp.manager ? 'mngr' : 'peon'}"> 
     <td>#{emp.lastName}</td> 
     <td>#{emp.firstName}</td> 
    </tr> 
</table> 

En este ejemplo, no vinculamos esta tabla para una h:datatable componente, pero creamos una tabla con código HTML, utilizando el componente JSF ui:repeat para iterar en las filas.

Como puede ver, el atributo jsfc se puede utilizar para convertir un componente HTML en un componente JSF en una página JSF. Por lo tanto, para componentes complejos, como la tabla de datos, deberá usar algunas soluciones (usando ui:repeat en lugar del componente h:datatable).

Otro punto es que no podrá usar componentes de bibliotecas externas como los propuestos por RichFaces, IceFaces, Tomahawk, etc. Y estas bibliotecas son realmente uno de los intereses de JSF.

Así que para resumir: jsfc puede ser útil para transformar un prototipo HTML en una aplicación JSF, esencialmente para crear una Prueba de conceptos o diseñar la interfaz de usuario general. Sin embargo, creo que es mejor evitar este componente una vez que comience el desarrollo "real" ...

+0

Bueno ...de hecho, acabo de probar el atributo jsfc con un componente de terceros, y funcionó bien ... –