Ich versuche die beste Lösung für ein Problem zu finden, das ich mit der Zuordnung einer einfachen Bean-Struktur, die an eine browserbasierte JavaScript-Anwendung gesendet wird, habe. Die aktuelle Anforderung besteht darin, den größten Teil der Anzeigesteuerung im alten Java-Backend zu verwalten. Derzeit haben wir eine Service-Stil-Schicht, die Wertobjekte ohne Anzeigelogik in sie aufgebaut produziert mag:Complex Bean Mapping
public class Example1 {
String value1;
Boolean value2;
Example3 value3;
public String getValue1(){...}
public void setValue1(){...}
....
}
Mein Ziel eine allgemeine Struktur über alle Felder abzubilden so in der Lage ist, dass es die neue Anzeigestruktur fügt das wird vom Front-End benötigt. Ich möchte nur die ursprüngliche Strukturklassenstruktur (Beispiel1-Klasse) verwalten und einfach die zusätzlichen Werte in einem Wrapper auf die alte Serviceschicht einstellen.
Die allgemeine Struktur würde die Form der folgenden Klasse nehmen:
public class Presentable<T> {
T value;
boolean visible = true;
boolean mandatory = false;
List<String> errors = new ArrayList<>();
public T getValue() {...}
public void setValue(T value) {...}
...
}
Das Endergebnis etwas wie folgt aussehen würde, wobei Wert auf den Wert in der ursprünglichen Struktur ist gleich:
public class Example2{
Presentable<String> value1;
Presentable<Boolean> value2;
Presentable<Example3> value3;
public Presentable<String> getValue1(){...}
public void setValue1(){...}
...
}
Gibt es eine Lösung für dieses Problem, ohne eine Example2-Stilklasse zu schreiben und jeden einzelnen Wert zu kopieren? Ich bin offen für die Änderung der Klasse Example1, da sie die Kunden des alten Dienstes nicht betrifft.
Danke.
Update: Die einzige Lösung, die ich gefunden habe, ist die Verwendung von Code-Generationen mit Anmerkungen. Obwohl ich ein schnelles POC geschrieben habe, ist es sehr dreckig. –
Sie müssen mehrere Objekte von Example1 auf der Grundlage der Client-Anforderung haben. Warum brauchen Sie dafür eine generische Klasse? Sie können ein Front-End-Arraylist-Mapping verwenden. Jedes Mal, wenn ein Benutzer ein neues hinzufügt, fügt es automatisch ein weiteres Objekt von Example1 in die ArrayList ein. Sie haben eine Liste, die alle Objekte von example1 enthält. –
Dileep