Dzielenie sesji między zakładkami przeglądarki JSF

Dzielenie sesji między zakładkami przeglądarki JSF
MM
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 7 lat
0

Witam.

Mam projekt w JSF2.2.
Chciałbym zrobić, aby na każdej zakładce była inna sesja tzn wyszukam na pierwszej zakładce osoby o nazwisku Kowalski (do datatable). Następnie na drugiej zakładce wyszukam osoby o nazwisku Nowak. Teraz gdy wejdę na pierwszą zakładkę i odświeżę stronę to mam listę Nowaków, ponieważ managed-bean został nadpisany przez drugą zakładkę.
Chciałbym rozdzielić sesje. W tym przypadku managed-bean ma ustawiony scope na session.

Gdy ustawię scope na View to podział na zakładki działa poprawnie, ale przy każdym refresh strony wykonywany jest destroy beana a następnie tworzony jest nowy, a chciałbym żeby po refresh bean nie tracił danych.

Jak to obejść? Jak rozdzielić sesje na zakładki przy session scope lub jak zachować beana przy refresh strony dla view scope ?

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
1

Dawno juz nie pisalem w JSF.. ale e ogólności to się nie da jak używasz SessionScope. Pytanie zasadnicze: jaka klęska żywiołowa spowodowała, że używasz JSF? Polecam ubić to jeśli tylko możesz. Naprawde. Zeby miec gorszą platforme do robienia web to trzeba by chyba zejsć do Atari 2600.
Btw. Viewstate client tez Ci na refresh nie pomoze. Kupa.


jeden i pół terabajta powinno wystarczyć każdemu
CH
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad rok
  • Postów:656
1

Coś takiego umożliwiał framework Seam. Używałem tego z JSF 1.1 i Richfaces. Czyli trochę podobnie jak w JSF 2, bo richfaces dodawał ajaksowe rzeczy. Rozwiązanie polegało na dodatkowym zasięgu (scope), który nazywał się conversation. Był identyfikowany przez parametr przesyłany przez get, czyli cid=1. Jeżeli otwierało się nową kartę, to ona była w tej samej sesji, ale miała nowy cid. Wydaje mi się, że JSF2 coś takiego miał dodane, trzeba by zerknąć w dokumentacje i opis do scope, na pewno nazywa się to inaczej.

edytowany 1x, ostatnio: chodnik
SP
to jest chyba najlepszy sposób, zasięg jest teraz w javax.enterprise.context.ConversationScoped
M9
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 6 lat
0

Po co robisz refresh strony przy @ViewScoped (wiele rzeczy można zrobić na AJAX PrimeFaces)? Co innego redirect, ogólnie dobrze mi się pracowało, gdy @ViewScoped był nieszczony po przejściu pod inny adres (JSF to nie jest technologia do SPA, więc jak dla mnie redirecty są tam ok). Gdy robiłem redirect (przejście do innego widoku) to rzeczywiście traciłem dane przechodząc do innego widoku, ale dość łatwo sobie z tym poradzić przy @ViewScoped, tak aby przy powrocie na poprzedni adres wyświetlić poprzedni stan np zapamiętane filtry.

Ogólnie znalazłem na to taki sposób:

  • w sesji zapisywałem sobie klucz danych, które są potrzebne do pobrania (np. wartości filtru z datą na formularzu, albo nazwisko Kowalski)
  • przy wejściu do JSF ManagedBeana, który miał @ViewScoped na @PostConstruct implementowałem logikę, która sprawdzała czy w sesji jest zapamiętany jakiś stan np. wartości pól formularzy (klucze filtrów), które powodują załadowanie konkretnych danych, jeśli tak po prostu zasilałem @ViewScoped poprzednimi danymi (strzał do bazy przy @PostConstruct) w momencie jego tworzenia i w ten sposób odtwarzałem sobie widok, nie było to specjalnie trudno zrobić. W sesji pamiętałem to co jest potrzebne do pobrania danych z bazy przy odzyskiwaniu widoku, nie same odzyskiwane dane.

Gdy używałem SessionScope do wyświetlania danych formularzy to miałem same poblemy. Może 1% beanów to było SessionScoped. 95% to myślę, że @ViewScoped na JSF 2.2.

edytowany 1x, ostatnio: margor90
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)