Arguments gegen einen generischen JSF-Objektkonverter mit einer statischen WeakHashMap

Ich möchte vermeiden, dass Kesselplattencode zum Erstellen einer Liste von SelectItems verwendet wird, um meine Entities / Dtos zwischen Ansicht und Modell abzubilde snippet eines generischen Objektkonverters:

@FacesConverter(value = "objectConverter")
public class ObjectConverter implements Converter {

private static Map<Object, String> entities = new WeakHashMap<Object, String>();

@Override
public String getAsString(FacesContext context, UIComponent component, Object entity) {
    synchronized (entities) {
        if (!entities.containsKey(entity)) {
            String uuid = UUID.randomUUID().toString();
            entities.put(entity, uuid);
            return uuid;
        } else {
            return entities.get(entity);
        }
    }
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String uuid) {
    for (Entry<Object, String> entry : entities.entrySet()) {
        if (entry.getValue().equals(uuid)) {
            return entry.getKey();
        }
    }
    return null;
}

}

Es gibt schon viele answers zu ähnlichen Fragen, aber ich möchte eine Vanille-Lösung (ohne * Gesichter). Die folgenden Punkte lassen mich immer noch unsicher über die Qualität meines Snippets sein:

Wenn es so einfach war, warum ist in @ kein generischer Objektkonverter integrier JSF?Warum benutzen so viele Leute nochGegenstände auswähle? Gibt es nicht mehr Flexibilität durch den generischen Ansatz? Z.B. # {dto.label} kann schnell in # {dto.otherLabel} geändert werden.Gegeben, der Geltungsbereich besteht nur darin, zwischen Ansicht und Modell zuzuordnen. Gibt es einen wesentlichen Nachteil des generischen Ansatzes?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage