spring web

Oglądasz archiwalną wersję wątku "spring web" z forum pl.comp.lang.java



LuQaS - 1 Lis 2008, 17:57
Witam,

Mam taki oto problem, chciał bym aby po zalogowaniu usera, na stronie

ta informacja była dostępna na każdej stronie aplikacji. Moje pytanie
jak najlepiej rozwiązać dodawanie informacji do modelu nie chciał bym
tego robić ręcznie w każdym kontrolerze z osobna.

I jeszcze dodatkowe pytanie, dodaje nowy obiekt do modelu:

modelAndView.addObject("user", new User());

obiekt user posiada obiekt company a ten obiekt phone
teraz w widoku chce wypełnić obiekt, więc mam coś takiego
user.company.phone.number oczywiście będzie exception bo obiekt
company i phone są nie zainicjalizowane. Jest jakieś inne wyjście niż
ręcznie inicjalizować wszystkie obiekty w łańcuchu?

Dzięki
Luq




Brzezi - 2 Lis 2008, 04:07

Mam taki oto problem, chciał bym aby po zalogowaniu usera, na stronie

ta informacja była dostępna na każdej stronie aplikacji. Moje pytanie
jak najlepiej rozwiązać dodawanie informacji do modelu nie chciał bym
tego robić ręcznie w każdym kontrolerze z osobna.



filtr

modelAndView.addObject("user", new User());

obiekt user posiada obiekt company a ten obiekt phone
teraz w widoku chce wypełnić obiekt, więc mam coś takiego
user.company.phone.number oczywiście będzie exception bo obiekt
company i phone są nie zainicjalizowane. Jest jakieś inne wyjście niż
ręcznie inicjalizować wszystkie obiekty w łańcuchu?



Nie widze innej mozliwosci

Pozdrawiam
        Brzezi



Matt Z - 2 Lis 2008, 05:30

Witam,

Mam taki oto problem, chciał bym aby po zalogowaniu usera, na stronie

ta informacja była dostępna na każdej stronie aplikacji. Moje pytanie
jak najlepiej rozwiązać dodawanie informacji do modelu nie chciał bym
tego robić ręcznie w każdym kontrolerze z osobna.



compositeController?

I jeszcze dodatkowe pytanie, dodaje nowy obiekt do modelu:

modelAndView.addObject("user", new User());

obiekt user posiada obiekt company a ten obiekt phone
teraz w widoku chce wypełnić obiekt, więc mam coś takiego
user.company.phone.number oczywiście będzie exception bo obiekt
company i phone są nie zainicjalizowane. Jest jakieś inne wyjście niż
ręcznie inicjalizować wszystkie obiekty w łańcuchu?



filtr OpenSessionInView



Jacuo - 2 Lis 2008, 13:35

| Mam taki oto problem, chciał bym aby po zalogowaniu usera, na stronie

| ta informacja była dostępna na każdej stronie aplikacji. Moje pytanie
| jak najlepiej rozwiązać dodawanie informacji do modelu nie chciał bym
| tego robić ręcznie w każdym kontrolerze z osobna.

filtr



MSZ to średni pomysł - sugerował bym kompozycję .....




mproch - 3 Lis 2008, 03:32

Witam,

Mam taki oto problem, chciał bym aby po zalogowaniu usera, na stronie

ta informacja była dostępna na każdej stronie aplikacji. Moje pytanie
jak najlepiej rozwiązać dodawanie informacji do modelu nie chciał bym
tego robić ręcznie w każdym kontrolerze z osobna.



a może by tak 'modnie' użyć AOP ;) ? np. zrobić jakiegoś interceptora
wokół wywołania handleRequestInternal (czy jakiejś innej metody) dla
kontrolerów, dodającego do wyniku (ModelAndView...) usera.
Może to trochę przekombinowane - ale chyba powinno działać



miluch - 3 Lis 2008, 04:40


| Mam taki oto problem, chciał bym aby po zalogowaniu usera, na stronie

| ta informacja była dostępna na każdej stronie aplikacji. Moje pytanie
| jak najlepiej rozwiązać dodawanie informacji do modelu nie chciał bym
| tego robić ręcznie w każdym kontrolerze z osobna.

a może by tak 'modnie' użyć AOP ;) ? np. zrobić jakiegoś interceptora
wokół wywołania handleRequestInternal (czy jakiejś innej metody) dla
kontrolerów, dodającego do wyniku (ModelAndView...) usera.
Może to trochę przekombinowane - ale chyba powinno działać



A czemu modnie AOP ?
AOP jest to narzędzie jak każde inne ...
W przypadku SPRING AOP trzeba pamietac o problemach z budowaniem oraz
działanie proxy opartych na CGLIB (bezparametrowy konstruktor, brak
przechwycen metod final, no i ogółem problemzmetodami final:
http://americas.springone.com/blogs_speaker.jsp?bookmarkId=1223390733...
-
Caveats with Class Proxying in Spring).
Ja osobiście zrobiłbym to trochę inaczej w stylu JSP (oczywiscie jeśli
widokiem jest JSP) - skorzystałbym z możliwości definiowania SCOPE dla
danego beana: request,session,prototype, singleton - oczywiscie jeśli
chodzi o użytkownika zalogowanego to byłby scope="session" , jeżeli
będzie potrzeba injectowania bean z tym scopem do bean o innym
scopie( innym cyklu życia)  to dodatkowo określiłbym <aop:scoped-
proxyno i jakoś - na pewno jest to bez problemu do zrobienia z
poziomu JSP odwolal sie do bean z sesji...

Czyli jak user sie zaloguje/cos tam zrobi - w kontolerze albo miec
zinjectowanego beana ze scopem="session" i <aop:scoped-proxyi go
wypelnic albo robic lookup (nie trzeba miec wtedyaop:scoped-proxy) i
wtedy wypelniamy.
Z poziomu JSP wierze ze jest bezproblemu sposób by sie dostac do
wartosci z tego beana.

pzdr miluch



LuQaS - 3 Lis 2008, 04:43

compositeController?



Masz tutaj na myśli composition pattern czy jest jakąś springowa
implementacja?
Googluje ale nie wynajduje żadnych konkretów.

Na razie użyłem interceptora i tam dodaje mojego usera do modelu.
Nie wiem dokładnie jak ma działać wersja z kompozycją którą tutaj
sugerujecie, chciałbym aby nie trzeba było jawnie w kontrolerach
wywoływać żadnych metod.

Co do AOP nie miałem jeszcze styczności możliwe że trzeba się wreszcie
przyjrzeć temu.

filtr OpenSessionInView




Luq



Matt Z - 3 Lis 2008, 05:42

Masz tutaj na myśli composition pattern czy jest jakąś springowa
implementacja?



myślałem, że jest, ale chyba faktycznie nie ma. W takim razie będziesz
musiał ją stworzyć.




musisz dodać filtr OpenSessionInViewFilter który otwiera w warstwie
prezentacji sesję Hibernate i dopytuje się o to o co trzeba.



LuQaS - 3 Lis 2008, 06:48

musisz dodać filtr OpenSessionInViewFilter który otwiera w warstwie
prezentacji sesję Hibernate i dopytuje się o to o co trzeba.



No to się zgadza ale to nie rozwiązuje mojego problemu. Ja nie
pobieram obiektu z bazy a tworze nowy pusty obiekt w kontrolerze i
wypełniam go na stronie. Doczytałem ze jest coś takiego jak
propertyEditor (registerCustomEditor) i to by rozwiązało mój problem

uniwersalniejszego jakiejś klasy co rekurencyjnie inicjalizuje
wszystkie obiekty dla klasy.


Spring 2.5, how to step by step
Eclipse WTP - projekt zwykły w projekt web
Kilka pytań na temat podejścia do problemu utrwalania i pobierania danych (Spring+Hibernate)
blad podwojnej konfiguracji spring context przy deployowaniu app
  • pielegniarki opieka kielce
  • czemu po moim routerze jest getaway a potem
  • kretynskie smsy od roznych reklamodawcow
  • smieszne teksty historie
  • drzewka do kupienia
  • katowice awf fizjoterapia egzaminy
  • java;warcaby
  • tunezyjski aar 1066 1820
  • o symbianie na powaC2 nie czyli
  • Zbieranina wiadomości z for dyskusyjnych || Indeks