ile bir genel JSF nesne dönüştürücüsüne karşı argümanlar Görünümler ve model arasında varlıkları/dtos'ları eşleştirmek için SelectItems'in bir listesini oluşturmak için kazan plakası kodundan kaçınmak istiyorum, bu nedenle bu genel nesne dönüştürücüsünün snippet'unu kullandım:Statik bir WeakHashMap
@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;
}
}
Similliar soruları için zaten birçok answers var, ama ben bir vanilya çözümü istiyorum (* yüzü olmayan). aşağıdaki noktaları hala benim pasajı kalitesi hakkında beni belirsiz bırakın:
- kolay, neden genel bir nesne dönüştürücü JSF içine orada inşa olmadığını olsaydı?
- Neden bu kadar çok kişi hala SelectItems kullanıyor? Genel yaklaşımı kullanarak daha fazla esneklik yok mu? Örneğin. # {dto.label} hızlıca # {dto.otherLabel} şeklinde değiştirilebilir.
- Gözden geçirmenin sadece görünüm ve model arasında bir eşleme olduğunu düşünürsek, genel yaklaşımın önemli bir dezavantajı var mıdır?