Я немного расширю свой комментарий здесь. JSF - это не обычный веб-фреймворк. Это компонентная веб-платформа. Так же как и GWT, Ваадин, Эхо и тому подобное. С ними нельзя легко обойтись, если они не производят строгий XHTML. (ну, если хотите, вы можете изменить Component / Renderer в JSF)
С другой стороны, фреймворки, такие как Spring-MVC, Struts, Grails и т. Д., Являются веб-фреймворками на основе действий. Они не имеют компонентов в качестве внутренних частей. Да, они предоставляют удобные библиотеки тегов, но вы можете обойтись без них, если они не могут создать строгий xhtml. Например, вы можете использовать <form:input>
, но вы также можете использовать <input type="text" />
и просто установить правильные name
и value
.
Большинство основанных на действии сред используют JSTL для управления потоком данных в представлении (JSP). Так что никаких скриплетов. Но сам JSTL не создает никакой разметки. Таким образом, вы можете использовать JSTL + свою рукописную разметку для создания строгого XHTML.
Библиотеки тегов, которые будут использоваться, - это отдельная история. Например, если вам нужен календарь, вы можете использовать taglib, и он может не отображать правильный xhtml. Но вы также можете использовать календарь jQuery - для среды, основанной на действии, разница не будет огромной.
Тем не менее, у меня есть опыт работы с Spring-MVC и Grails, и вы можете использовать их - они позволяют детально контролировать сгенерированную разметку.