Вот ссылка с самосвалом кода и демонстрационный проект, который показывает Вам, как использовать его. Загрузка это здесь .
Преимущество любой структуры, такой как SEAM или Grails, состоит в том, что это более высокий уровень абстракции. Он заботится о базовых деталях за вас и, если он хорошо спроектирован и написан, упрощает работу.
Недостатком любой структуры, такой как SEAM или Grails, является то, что она скрывает от вас множество деталей. Если вы никогда не узнаете, что происходит внизу, вы можете оказаться в мире проблем, если застрянете и ничего не знаете о коде, который сгенерирован для вас.
Еще один недостаток состоит в том, что предположения, в которые они входят модель не всегда может быть такой, какой вы хотите. Но изменить их - значит сломать путь, который они проложили для вас, что непросто.
Я бы посоветовал использовать фреймворк и ценить преимущества, которые он приносит, но не делайте этого. Не используйте их как предлог, чтобы перестать узнавать, что происходит внутри. Будьте тем человеком, который мог бы написать все от руки, без фреймворка, но предпочел бы использовать его в качестве рычага, который он предоставляет.
Я использовал Seam в крупном проекте IceFaces. Seam, безусловно, намного лучше, чем использование простого JSF (см. Ссылку, опубликованную Damo несколькими ответами выше).
Однако некоторые из проблем, которые я помню:
Facelets
JSTL
JSF
ICEFaces
JSF
Производительность Seam
Неверно говорить «Шов - это следующий шаг JSF». Seam не обязательно должен использовать JSF в качестве слоя представления. Он также может использовать Wicket или GWT .
Однако при использовании с JSF он значительно упрощает его. У вас меньше XML-конфигурации, чем у стандартного JSF, и я часто забываю, что JSF не имеет таких вещей, как контекст разговора или вызовы параметризованных методов в EL. например:
<h:commandButton action="#{myBean.sayHello('damo')}" value="hello"/>
С ним легко работать, и возможность использовать POJO везде очень раскрепощает. Его самые большие недостатки связаны с JSF:
s: кнопка / ссылка
не всегда решает) Более чем достаточно страниц с подробным описанием недостатков JSF в другом месте (обратите внимание, что это не критика Seam, а скорее JSF1.x, и многие из них устранены в JSF2.0)
Я не верю, что Seam - это «следующий шаг» для JSF, но он и Facelets имеют решающее значение, если вы планируете использовать JSF1.x прямо сейчас.
Seam, как среда интеграции, действительно покажет свою полезность в сочетании с другими платформами, которые вы хотите использовать.
Если вы собираетесь уже использовать EJB и JSF, SEAM - убийца.
Если вы собираетесь использовать JSF (плюс любые связанные с ним инструменты, такие как IceFaces или RichFaces), POJO SEAM могут значительно упростить вашу настройку, а также предоставить вам доступ к состояниям жизненного цикла, которые предоставляет seam (обсуждение и т. д.)
Если вы используете EJB с Wicket или GWT, Seam может также сохранить вам некоторую конфигурацию, хотя я лично не использовал его в этой конфигурации.
Как уже было сказано , Недостатки Seam присущи любой структуре абстракции: он скрывает от вас детали. Если он начнет протекать, у вас проблемы. Я' У меня еще не было утечек, но я также потратил время, чтобы дать себе хорошее, базовое понимание того, как это работает. Как EL работает с аннотациями швов и т. Д.
Собираетесь ли вы найти шов полезным, зависит от фреймворков, с которыми вы собираетесь его использовать. У Seam определенно есть своя золотая середина, но она растет. Шов определенно не мертвый проект. :)
Мне это кажется естественным, а использование аннотаций облегчает жизнь. Я даже не могу представить себе работу с фреймворком getAttribute / getParameter. Одним из недостатков является то, что seam-gen еще не работает с Maven (но Seam3 будет основан на Maven). Я думаю, что Seam заставляет вас сосредоточиться на том, чего вы хотите достичь, и с другими фреймворками вы должны думать, как это сделать. Вы когда-нибудь пробовали использовать Ajax с javascript / prototype / jquery? Это действительно больно по сравнению с шовной кнопкой Ajax с вызовом метода и тем, что перерендерить. Javascript вообще не нужен со швом и Rich Faces. для меня это лучший фреймворк, который я использовал.
Мне нравится JSF, и я недавно оценил Seam. JSF - это структура веб-интерфейса, тогда как Seam - это более общая среда веб-приложений, которая объединяет не только JSF, но и диалоговые контексты, рабочий процесс (jBPM) и постоянство объектов (предпочтительно EJB3). Сначала меня привлекли в Seam рекламируемые автоматически генерируемые леса, но я так и не смог заставить их работать с моей корпоративной моделью данных. С тех пор меня больше интересуют Spring Framework и Spring JSF. Мне он нравится как более модульный, и если вы используете iBATIS, ему нужен только контейнер сервлетов, такой как Tomcat, а не контейнер Java EE, такой как JBoss. Spring существует дольше и имеет больше внимания.
Также ICEfaces отлично работает с JSF и фейсклетами, он отлично работает с такими приложениями, как Seam или Spring, или без них.
Если вы поставите логгер на ваш компонент Seam (например, resultList), вы увидите, что Seam вызывает один и тот же метод много раз. Это единственное, что раздражает в Seam. Но Seam определенно "исправил" JSF, который сам по себе довольно запутанный. Давайте посмотрим на JSF2. Несмотря на эти проблемы, я очень рад использовать Seam.