Facelets uses the jsfc attribute to convert HTML elements to their associated JSF components. This is rather helpful for fast prototyping as it
As you said, the jsfc
attribute is essentially usefull when you have to "convert" an HTML prototype to a JSF page. For example, when you have an HTML input text:
you can add the jsfc
attribute in order to convert this HTML component into a JSF component:
This is equivalent to writing the following JSF code:
As stated in the Facelets documentation here or here, the attribute jsfc
can also be used to "map" Facelets components. For example, you can remove a part of the HTML code:
This won't be compiled either
You can also create a table using this attribute:
#{emp.lastName}
#{emp.firstName}
In this example, we do not link this table to a h:datatable
component, but we create a table with HTML code, using the JSF component ui:repeat
to iterate on rows.
As you can see, the jsfc
attribute can be used to convert one HTML component into one JSF component in a JSF page. So for complex components, such as the datatable, you will have to use some workarounds (using ui:repeat
instead of the h:datatable
component).
Another point is that you will not be able to use third-libraries components such as the ones proposed by RichFaces, IceFaces, Tomahawk, and so on. And these libraries are really one of the interests of JSF.
So to summarize: jsfc
can be usefull to transform a HTML prototype into a JSF applications, essentially for creating Proof of Concepts or designing the general UI. However, I think it is better to avoid this component once the "real" development starts...