Ответ 1
Вы делаете концептуальную ошибку. JSF не является технологией просмотра. JSF - это структура MVC. Точно так же, как Spring MVC, хотя они имеют и другую идеологию; JSF представляет собой MVC на основе компонентов, а Spring MVC - это MVC, основанный на запросах. Таким образом, они являются полными конкурентами. Вы не можете их смешивать. Вы должны выбрать тот или другой. Вместо этого JSP и Facelets - это настоящие технологии просмотра. Поскольку Java EE 6 (декабрь 2009 г.), JSP устарел и заменен Facelets (XHTML) как технология просмотра по умолчанию для JSF.
Вы можете использовать Spring MVC с технологию просмотра JSP. Вы также можете использовать Spring MVC с Технология просмотра Facelets (и многие другие), Но вы не можете использовать Spring MVC с компонентами JSF, не говоря уже о библиотеках компонентов JSF, таких как PrimeFaces. Это не имеет никакого смысла. Spring В MVC уже есть теги <form:xxx>
. Если вы хотите использовать тот же интерфейс, что и PrimeFaces, просто возьмите jQuery UI. Это также то, что PrimeFaces использует под обложками. PrimeFaces - это библиотека компонентов JSF на основе jQuery.
С другой стороны, также может быть очень хорошо, что вы путаете Spring IoC/DI с Spring MVC. Spring IoC/DI в свою очередь полезный вместе с JSF. Вы можете заменить управляемый JSF объект bean (@ManagedBean
и друзей) с помощью Spring управляемого bean объекта (@Component
и друзей), как правило, с единственной целью использовать @Autowired
в поддержке JSF bean. Но это так. Жизненный цикл структуры JSF MVC, компоненты JSF и технология просмотра остаются неизменными. Стандартный эквивалент Java EE, который будет использовать CDI (и EJB).
То же самое относится к Spring безопасности. Вы можете использовать его вместе с JSF, однако вы не должны следовать Spring безопасности + Spring целевой документации/примеров MVC, чтобы настроить его, но только Spring Security + JSF. Обратите внимание: Spring Ограничения безопасности для бизнес-действий действуют только при замене объекта bean, управляемого JSF, на Spring управляемый объект bean. Для этого все равно потребуется "Интегрировать Spring в JSF", как описано в предыдущем абзаце. Стандартный эквивалент Java EE этого всего будет использовать безопасность, управляемую контейнером (JAAS/JASPIC) через записи <security-constraint>
в web.xml
.
То же самое относится и к Spring WebFlow. Вам также необходимо убедиться, что вы используете самую последнюю версию Spring WebFlow, поскольку более старые версии вызывают конфликты при использовании вместе с несколькими библиотеками компонентов JSF. Более того, поскольку JSF 2.2, новая функция Faces Flows была введена как часть стандартного API Java EE, тем самым в основном делая Spring WebFlow излишним.
Тогда есть Spring Boot. Это не имеет прямого эквивалента в Java EE. Spring Загрузка в основном позволяет вам выполнить приложение Java EE с использованием простого класса Java-приложений с помощью метода main()
"простым и абстрактным способом". Без Spring Загрузитесь, конечно, возможно (иначе Spring Boot никогда не существовал бы), это лишь немного больше работы по настройке, так как вам нужно учитывать специфические для сервера детали, основанные на его документации. Например: Undertow и Jetty.
Возвращаясь к JSF и Spring MVC, если это действительно необходимо, вы можете безопасно запускать Spring MVC и JSF рядом друг с другом в одном и том же веб-приложении, но они не будут взаимодействовать на стороне сервера. Они будут работать совершенно независимо. Они будут наиболее близко касаться друг друга на стороне клиента, если какой-либо JavaScript на странице HTML, созданной JSF, вызывает вызов веб-службы REST на основе Spring в том же веб-приложении. Но этот веб-сервис Spring тогда не понадобится/должен знать что-нибудь о JSF, чтобы соответствующим образом реагировать. Стандартный эквивалент Java EE этого веб-сервиса Spring REST JAX-RS.
Предстоящая Java EE 8 будет поставляться с новой структурой MVC, основанной на запросах, с именем "MVC" на основе уроков как JSF, так и Spring MVC, тем самым вытесняя Spring MVC и предоставляя стандартную альтернативу JSF.
См. также:
- Что такое Java EE?
- Разница между запросом MVC и компонентом MVC
- Каковы основные недостатки Java Server Faces 2.0?
- В чем же необходимость JSF, когда пользовательский интерфейс может быть достигнут из CSS, HTML, JavaScript, jQuery?
- Когда это необходимо или удобно использовать Spring или EJB3 или все вместе?
- Spring Интеграция JSF: как внедрить компонент/службу Spring в управляемый JSF bean?
- Почему Facelets предпочтительнее JSP в качестве языка определения вида из JSF2.0 и далее?