Kiedy integrujesz Spring i JSF, naprawdę nie możesz być początkującym w żadnej z technologii, ponieważ nie grają dobrze razem. Moja pierwsza i najlepsza rada dla ciebie to dostać kilka książek o JSF i Spring i naprawdę zrozumieć oba osobno przed próbą ich zintegrowania.
Zgodnie z tym, JSF jest opartym na komponentach systemem internetowym z naciskiem na MVC. Spring jest strukturą Dependency Injection i Inversion of Control, która nie dotyczy wyłącznie aplikacji internetowych.
Jeśli nie zrozumieć te trzy warunki są:
wtedy mój Sugestia jest taka, że po prostu przestajesz robić to, co robisz i natychmiast rozpocząć czytanie.
Głównym problemem związanym z integracją tych dwóch rzeczy jest to, że istnieje pewien zakres pokrywania się obowiązków między tymi dwoma ramami, którymi należy się zająć. JSF jako autonomiczna struktura utrzymuje zakres własnych zarządzanych komponentów bez potrzeby oddzielnego frameworka DI. Jednak przy wprowadzaniu Springa będą oczywiście konflikty. Spring zarządza własnymi fasolami oprócz JSF, więc aby odnieść się do tych ManagedBeans i mieć obiekty biznesowe lub DAO być odpowiednio wstrzykiwane do ich użycia, JSF ManagedBeans muszą stać się Spring Controllerami.
Możesz zadeklarować JSF ManagedBean z adnotacją @Controller
. Spring 3 jest wystarczająco inteligentny, aby rozpoznać, że jest to komponent bean zarządzany przez JSF, a nazwa komponentu będzie taka sama, jak nazwa deklarowana dla ManagedBean.
@Controller
@Scope("session")
@ManagedBean(name="testBean")
Następnym problemem jest teraz, że trudny do opanowania EL Resolver dołączony do implementacji JSF. EL Resolver w zasadzie to robi, rozwiązuje wyrazy EL napotkane na twojej stronie XHTML/JSF. Podczas odwoływania się do testBean
jednak nie będzie w stanie poprawnie rozpoznać tej nazwy, ponieważ odnosi się do fasoli zarządzanej przez JSF o tę nazwę, i nie będzie w stanie znaleźć kontrolera Spring ze wszystkimi wymaganymi wstrzyknięciami Spring.
Wiosna 3 rozwiązuje ten problem, dostarczając niestandardowy EL Resolver do użycia zamiast tego, który jest dołączony do twojej implementacji JSF. Można zadeklarować użycie go w faces-config.xml
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
Teraz wreszcie:
należy umieścić jakąś słuchaczy w moim web.xml?
Jeśli dopiero integracji JSF + sprężyna bez konieczności stosowania jakichkolwiek innych wiosennych kontrolowane serwletów lub bez potrzeby integracji Wiosna Bezpieczeństwa następnie nr nie trzeba nic dodatkowo w swoim web.xml
. Będziesz musiał tylko zadeklarować FacesServlet i jego parametry kontekstowe oraz wszelkie inne serwlety bibliotek komponentów firm trzecich, które mogą być niezbędne dla twojej sytuacji.
Świetne wyjaśnienie. Dzięki! – Kris