Я работал в проектах, которые были написаны на struts, на webwork, на jsf даже — со struts и webwork связана большая кодогенерация, обидно когда она очень повторяющаяся (особенно в корпоративных системах), невысокий уровень абстракции, постоянная возня с HTML. jsf конечно самый реальный — нормальная компонентная модель — но гоняет много информации с помощью post, и еще мне показалось трудным как либо изменять либо самому писать компоненты, а готовые не всегда удолетворяют требованиям. Ну и вообще довольно запутанный фреймворк, хотя идеи правильные. С появлением facelets можно обьединять компоненты в более большие компоненты. Не видел tapestry, возможно тоже интересная штука (может кто скажет чего нибудь хорошего про него?).
Вобщем сейчас сел и ради интереса свой фреймворк написал, ничего сложного — компонентая модель, создаем обьекты в java коде, компонент рендерит себя в xml, этот xml в дальнейшем с помощью XSLT превращается в HTML. Работает это на spring MVC. Имеютя конвертеры и валидаторы как в JSF. Написал layout простенький, чтобы можно было формы создавать из java кода — работу с HTML вынес в шаблоны XSLT. В принципе благодаря такой архитектуре указывая у обьектов с помощью аннотаций некоторые параметры, у меня автоматом генерятся списочные формы и формы редактирования обьектов.
Свои компоненты соответственно писать несложно — надо создать java класс и соответствующий ему xslt файл.
Т.к. почти весь HTML создается в java коде, можно неплохих уровней абстракции достигать.
Кто что скажет про такую архитектуру? Или может кто расскажет о своих наработках или идеях?