Ersetzen von @ManagedBean Annotation durch @named erzeugt Fehler

  • Themenstarter Gelöschtes Mitglied 49152
  • Beginndatum
G

Gelöschtes Mitglied 49152

Gast
In einem Java-EE6-Tutorial wird die Einführung in JSF unter anderem über eine Bean mit nur einer Property samt getter und setter erstellt, diese wird mit der @ManagedBean-Annotation versehen.

Beim Erstellen des Projekt habe ich versehentlich EE7 eingebunden und bekam die Meldung ich solle die Annotation ändern, laut einem anderen Tutorial durch @Named ersetzen. Leider funktioniert dies nicht, auf die Property kann dann nicht mehr zugegriffen werden. Die Annotation stammt aus dem Paket javax.inject. Habe ich das falsche Paket eingebunden oder kann man die Annotation so nicht ersetzen und ich muss das Projekt mit EE6 neu erstellen ?
 
Zuletzt bearbeitet von einem Moderator:

stg

Top Contributor
beans.xml vorhanden?
Wenn nein, dann einfach ein (leeres) File mit dem Namen im WEB-INF-folder anlegen.

Unabhängig davon kannst du natürlich auch unter EE7 einfach weiter die "alten" JSF annotationen, wie z.B. @ManagedBean verwenden..

CDI ist einfach flexibler und in vielen Belangen überlegen, daher wird meist empfohlen diese Annotations zu verwenden, wann immer möglich.
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 49152

Gast
Erstmal danke für die Antwort :)

Die beans.xml ist vorhanden, wurde von Netbeans mit angelegt. Muss der Zugriff auf das Name-Property dann vielleicht anders als mit
Java:
#{user.name}"
erfolgen ? Oder müssen zusätzliche Angaben gemacht werden ?


Wenn es mit dem Ändern der Annotation nicht getan ist würde ich das Thema CDI an dieser Stelle einschieben, auch wenn es im Moment vielleicht noch optional ist scheint es mir doch sinnvoller gleich es auf die Weise zu lernen die auch in Zukunft weiterhin angewendet werden kann. :rtfm:

edit - meine Javaklasse hatte das Interface Serializable nicht implementiert, nachdem ich dies geändert habe ist der Zugriff auch wieder möglich.
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 49152

Gast
So muss den Thread doch nochmal rauskramen - ich habe einen Fehler in der Klasse und kann ihn beim besten Willen nicht finden, die Fehlermeldung lautet 'BeanName is ambigous' und die Klasse kann nicht deployed werden.

Die Datei- und Klassennamen sind aber 100%ig korrekt, ich habe sie mehrfach überprüft, zumal alle anderen Klassen aus dem Tutorialmaterial übernommen wurden und auch alle mit der Vorlage übereinstimmen . Es kommt daher nur diese Klasse in Frage:

Java:
@Named 
@SessionScoped 
public class GreetingManager implements Serializable {
    
    @Inject
     private Greeter service;
     private String name;
     
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getGreeting(){
        return service.sayHello(name);
    }
}

Greeter ist ein Interface welches als einziges die Methode sayHello definiert, diese wird von einer Klasse BigGreeter inplementiert.
Wo ist der Fehler der das Deployment verhindert ?
 

Ähnliche Java Themen

Neue Themen


Oben