Wykonanie instrukcji tylko raz

Wykonanie instrukcji tylko raz
AL
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 7 lat
  • Postów:143
0

Witam, czy znany jest taki mechanizm który pozwoli wykonać mi daną instrukcje w sesji tylko raz ? Tzn. korzystam z DisplayTag-a i mam problem z listowaniem stron po nałożeniu filtrów.

W skrócie chcę zrobić tak, że kiedy wykryje nałożony filtr to żeby wykonał daną instrukcje ale tylko raz

Kopiuj
  List<String> supplierFilters = p.get("filterS");
        if (CollectionUtils.isNotEmpty(supplierFilters)) {
            selectedFilters.put("supplier", supplierFilters);
            starting = 1;
            paramsMap.put("clear", true);
        }

Chcę aby

Kopiuj
selectedFilters.put("supplier", supplierFilters);

wykonywało się zawsze, ale starting = 1;
paramsMap.put("clear", true);

Kopiuj
 tylko przy pierwszym przejściu if-a. Dlatego że ten If będzie przechodził zawsze kiedy nakładany będzie filtr, albo zmieniana strona na 2 czy 3 ale parametr starting i mapa, odpowiada za to że jeśli znajdujemy się na przykład na 6 stronie i nakładamy filtr który zwróci listę mniejszą niż pojemność strony( listowanie jest po 50 na stronę ) , to zamiast zwrócić pustą stronę, to chcę by wróciło do pierwszej, bo tam się to poprawnie listuje. Ponadto jeśli już nacisnę przejście na stronę drugą, nie chcę żeby starting i mapa się odpaliła, ponieważ na drugiej stronie pojawi mi się wartość z pierwszej. Parametr starting odpowiada kolejnemu id-kowi który zwraca procedura sql w tabeli. Starting to parametr stronnicowania tego że jeśli przejdę na drugą stronę listy to wiem że mam tam wyświetlić rekordy od 51 bo do 50 są wyświetlane na pierwszej.

Da się to zrobić jakoś ? Pozdrawiam
rad11
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:51
0

A coś mniej więcej takiego?

Kopiuj
HttpServletRequest request;
HttpSession session = request.getSession();

List<String> supplierFilters = p.get("filterS");
        if (CollectionUtils.isNotEmpty(supplierFilters)) {
            selectedFilters.put("supplier", supplierFilters);
Integer startingSession = request.getAttribute("starting");

//sprawdzamy czy starting nie jest ustawione w sesji
//jezeli nie jest to ustawiamy zmienna i ustawiamy atrybut w sesji

if(startingSession == null){

 session.setAttribute("starting", 1);
starting = 1;
}

            
            paramsMap.put("clear", true);
        }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.