Spring HTML Tabellen sortieren, filtern, Attribute ausblenden

Todo

Aktives Mitglied
Hi @ all,

ich suche zur Zeit nach eine "elegante" Methode, größere Tabellen zu sortieren, filtern und ggfs. bestimmte Attribute auszublenden. In Moment übermittel ich über Queryparameter die Anzahl der Datensätze, die zu sortierende Spalte, die Sortierrichtung und die aktuelle Seite zu einem Spring Controller. Dieser mappt das in eine "PageKlasse". Leitet diese zum Service, der dann auswertet, ob sortiert werden muss. Je nach dem wird dieses dann zu Methode mit sortieren oder ohne sortieren weitergeleitet. Die Abfrage wird mit dem jdbc-template auf einer mssql Datenbank abgesetzt. Die Datensätze werden dann in DTOs gepackt und wieder zum Controller weitergereicht. Kommt ein Filter hinzu wird noch eine andere Methode aufgerufen. Somit hat man in der DAO sowas wie:
  • Datensätze
  • DatensätzeMitSortierung
  • DatensätzeMitFilter
  • DatensätzeMitSortierungUndFilter
Dabei ist eine große Query für die Datensätze, soll sortiert werden wird am Ende ein Order an die Query gehangen, soll gefiltert werden wird im where noch die Attribute gehangen. Kann ggfs. äußerst unschön sein aber mir viel nichts anderes ein. Es funktioniert auch soweit, jedoch kommen noch andere Funktionen hinzu, wird es schnell extrem unübersichtlich. Es wird nicht mit jpa gearbeitet. Wie macht man sowas denn elegant? Ist ja kein seltenes Problem denke ich mal. Auf fertige Lösung ist extra verzichtet worden wegen Lizenzen.... Danke für eure Hilfe.
 
wird im where noch die Attribute gehangen. Kann ggfs. äußerst unschön sein aber mir viel nichts anderes ein. Es funktioniert auch soweit, jedoch kommen noch andere Funktionen hinzu, wird es schnell extrem unübersichtlich.

Liest sich erstmal ganz ordentlich...

Scheint mir eher ein Problem der Wartbarkeit des Codes zu sein.

Ich rate dazu, sich mal das SQL anzuschauen, welches da abgesetzt wird.

Dieses kann man wahrscheinlich durch geeignete Pattern "einfach" erzeugen lassen. So kannst du weitere Funktionen durch eine Methode, die die entsprechende Where-Klause erzeugt, anpassen.

Zum Beispiel gibt es bei mir die Klasse SearchCriteria und darin die Methode provideOrderByString, das die orderby-Klausel zusammenbaut und später an die DB gesendet wird.
 
Ok, vielleicht denke ich ja ausserhalb der Box, aber... Was ist mit JavaScript-Basierten Ansetzen? Warum willst du für jede Sortierung oder Filterung eine Server- und/oder DB-Operation absetzen. Schicke die Daten vielleicht eher vollständig (oder wenn zu viel dann "scheibchenweise", wenn auf der Seite gescrollt wird) an den Client und lass dort JavaScript sein Werk verrichten. Verhilft dir zu wenige Arbeit auf der Serverseite und einfacher zu wartenden Code. Ok, die Clientseite wird damit komplexer, aber hey - lager die Arbeit zu ihm aus...
 
@turtle ja muss zugeben, Pattern muss ich vielleicht mal noch öfters im Blick haben, da hast du vollkommen recht. Werde ich auch noch einsetzten, sollte vielleicht das erste sein.

@dzim du sprichst da grad eine Sache an, wo ich, ob man es glaubt oder nicht, echt lange überlegt hatte. Habe aber bei Datensätze größer 10000 befürchtet, dass die Response zu groß wird. Wenn man dann diese kleiner sendet muss man beim Filtern zwangsweise wieder eine neue Query absetzten (da der Client nicht von allen weiß). Somit habe ich mir gedacht kann man es auch ganz Server-Side machen. Aber danke für eure Ratschläge bringt mir schon mal sehr viel (zumindest dass ich nicht ganz auf den Holzweg bin).
 

Zurück
Oben