OK. Welcome to the JavaRanch, BTW.
Just to clarify, mixing HTML
pages and JSF pages in a webapp is not a problem. What I caution people against is mixing HTML and JSF tags on the
same page.
There are several reasons. HTML is basically processed linearly. JSF is compiled into a tree structure, and the elements in that tree are JSF elements. In JSF 1.0, this would actually result in having a lot of the HTML dumped to one side or another of the JSF output, since the HTML and JSF would have been processed separately. That's what the <f:verbatim> element was designed to help with. Newer versions of JSF are more tolerant, so the "verbatim" tag isn't as important, although I still prefer to use it to wrap stylesheet and inline JavaScript blocks. And if anyone wants to assert that I have no business putting that much raw CSS and/or JavaScript directly on a JSF page, I won't contest it, but sometimes expediency wins out.
The other reason for avoiding HTML on a JSF page is that JSF is designed with the idea that the same JSF view definition should be portable to many different output media, with a plug-replaceable rendering layer taking responsibility for the final generated output. While almost all common JSF does generate HTML, consider a situation where a PDF renderer was plugged in instead. In this case, since PDF is based on PostScript and not on HTML tags, the HTML tags would simply print instead of being processed. So if you had 2 table definitions in a view, one done with dataTable or panelGrid JSF elements and one with brute-force HTML, the JSF items would display just fine, but the HTML items would show up as a bunch of garbage with lots of angle brackets in it.
Realistically, PDF is an unlikely renderer for JSF to be using, although I have an app that where I'd like to. More commonly, however, output might be targeted towards devices and applications for the vision-impaired, or even ("please stay on the line. Your call is
very important to us! Press 1 to continue!") voice response units.