Hallo,
ähnlich wie in dem thread "Converter + Zugriff auf DAO und EntityManager" will ich per jsf in einem selectOneMenu eine Entity auswählen um dann damit zu arbeiten.
Wenn ich https://stackoverflow.com/questions...ncecontext-inject-autowired-etc-in-facesconve glauben schenken darf, sollte es nun mit jsf2.3 möglich sein 'einfach so' die ServiceBean bzw. auch einen PersistenceContext in den entsprechenden Converter zu Injizieren.
Irgendwie klappt das aber nicht wirklich bei mir :/
Ich habe viele viele workarounds fuer Versionen <=2.2 gefunden, aber irgendwie sträube ich mich diese zu verwenden...
Das Fehlerbild ist dabei folgendes: Generiere ich ein paar entities, werden diese im Select-menu dargestellt, aber sobald ich etwas damit machen will (beispielsweise eine entity loeschen) bekomme ich eine NullPointerException. Diese bezieht sich darauf, dass die Servicebean (bzw. der Entitymanager) im Converter null ist.
Der Converter sieht wie folgt aus:
Es scheint kein allgemeines Problem zu sein, da die injection in die REST-facade anstandslos funktioniert.
JSF-Version ist laut Kontrollausgabe 2.3.2 (Glassfish5 ebend)
komplettes minimalbeispiel -> http://github.com/istzustand/error
Welchen Punkt habe ich übersehen um das ganze wie gewünscht ans Laufen zu bringen?
P.S.: bitte um Nachsicht, falls ich was komplett idiotisches gemacht habe, oder zu doof war um die richtigen Stichwörter zu googeln, bin noch ein totaler noob...
ähnlich wie in dem thread "Converter + Zugriff auf DAO und EntityManager" will ich per jsf in einem selectOneMenu eine Entity auswählen um dann damit zu arbeiten.
Wenn ich https://stackoverflow.com/questions...ncecontext-inject-autowired-etc-in-facesconve glauben schenken darf, sollte es nun mit jsf2.3 möglich sein 'einfach so' die ServiceBean bzw. auch einen PersistenceContext in den entsprechenden Converter zu Injizieren.
Irgendwie klappt das aber nicht wirklich bei mir :/
Ich habe viele viele workarounds fuer Versionen <=2.2 gefunden, aber irgendwie sträube ich mich diese zu verwenden...
Das Fehlerbild ist dabei folgendes: Generiere ich ein paar entities, werden diese im Select-menu dargestellt, aber sobald ich etwas damit machen will (beispielsweise eine entity loeschen) bekomme ich eine NullPointerException. Diese bezieht sich darauf, dass die Servicebean (bzw. der Entitymanager) im Converter null ist.
Der Converter sieht wie folgt aus:
Java:
@FacesConverter(forClass = UserEntity.class, managed = true)
public class UserConverter implements Converter {
@PersistenceContext(unitName = "primary")
private EntityManager em;
@Inject
UserService userService;
@Override
public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
if (modelValue == null) {
return "";
}
if (modelValue instanceof UserEntity) {
return String.valueOf(((UserEntity) modelValue).getId());
} else {
throw new ConverterException(new FacesMessage(modelValue + " is not a valid User"));
}
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
System.out.println("submitted: " + Long.valueOf(submittedValue));
if (em == null) {
System.out.println("em is nich");
}
if (userService == null) {
System.out.println("Service is nich");
}
if (submittedValue == null || submittedValue.isEmpty()) {
System.out.println("submitted = nil");
return null;
}
try {
//return em.find(UserEntity.class, Long.valueOf(submittedValue));
return userService.getById(Long.valueOf(submittedValue));
} catch (NumberFormatException e) {
throw new ConverterException(new FacesMessage(submittedValue + " is not a valid User ID"), e);
}
}
}
Es scheint kein allgemeines Problem zu sein, da die injection in die REST-facade anstandslos funktioniert.
JSF-Version ist laut Kontrollausgabe 2.3.2 (Glassfish5 ebend)
komplettes minimalbeispiel -> http://github.com/istzustand/error
Welchen Punkt habe ich übersehen um das ganze wie gewünscht ans Laufen zu bringen?
P.S.: bitte um Nachsicht, falls ich was komplett idiotisches gemacht habe, oder zu doof war um die richtigen Stichwörter zu googeln, bin noch ein totaler noob...