JSF JSF 2 ManagedBeans

mistersativa

Mitglied
Hallo Zusammen,

ich bin grade dabei ein Projekt von JSF1 nach JSF2 zu migrieren.
Wie ich rausgefunden habe, funktioniert die ManagedBean verwaltung nicht mehr über die faces-config sondern direkt in den Beans über Annotations.

Beim Build Process bekomm ich folgende Fehlermeldung:

Code:
package javax.faces.bean does not exist
  import javax.faces.bean.SessionScoped;
                    
cannot find symbol
    symbol: class ManagedBean
    @ManagedBean(name="werkzeugwechsel")

Ich habe die Definition aus der faces-config gelöscht und dafür die Annotation über die Klasse geschrieben.
Code:
@ManagedBean(name="werkzeugwechsel")
@SessionScoped
public class Werkzeugwechsel extends BaseObject implements Serializable {
...

Ich nehme mal an, das liegt an einer fehlenden jar-datei.
Ich habe für die neue JSF-Version die beiden Dateien:
"myfaces-impl-2.0.4.jar" und "myfaces-api-2.0.4.jar"
eingebunden.

Hab ich was vergessen?
 

Final_Striker

Top Contributor
Die Annotations sind nur eine Erweiterung. D.h. du kannst es über Annatations machen, muss es aber nicht. Daran kann es also normalerweise nicht liegen.
 

JimPanse

Bekanntes Mitglied
Hallo,

1. Die ManagedBean konfiguration funktioniert immer noch mit der faces-config.xml! Ähnlich wie die Konfiguration der Entities von Hibernate/EJB kann dieses über Annotations oder über xml geschehen.

2. MyFaces ist nur eine erweiterte Laufzeitumgebung für JSF d.h. immer die SUN-RI (bzw. Mojarra) Fassung von JSF miteinbinden !
JavaServer Faces Community — Java.net
 

mistersativa

Mitglied
Ok gut zu wissen. Ich würde es gern über die Annotation machen.

Wenn ich die vorher beschrieben Fehlermeldung beim Buildprocess via Ant bekomme. Heißt das mir fehlt eine JSF-Datei im "Build path" in Eclipse oder in dem Libordner in den Webapps?

Ich hab ehrlich gesagt noch nicht ganz verstanden, warum ich das zwei mal pflegen muss.

Benötige ich auch die jsf-facelets.jar?
 

Final_Striker

Top Contributor
Code:
package javax.faces.bean does not exist
  import javax.faces.bean.SessionScoped;
                    
cannot find symbol
    symbol: class ManagedBean
    @ManagedBean(name="werkzeugwechsel")

Hast du die Klasse [c]ManagedBean[/c] importiert?
 

mistersativa

Mitglied
Ja:
Code:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

Mich wundert, dass er sagt, dass das Package "javax.faces.bean" nicht existiert.
Ich hab die myfaces-api-2.0.4.jar entzipt und reingeschaut. Und dort befindet sich unter javax/faces/bean die Datei ManagedBean.class.

Deswegen gehe ich davon aus, dass das Problem beim einbinden des Jar-Files liegt.
Im Eclipse funktioniert auch die Autovervollständigung. wenn ich import javax.faces.bean tippe, schlägt er mir ManagedBean vor.

Erst beim Deploytask von Ant beschwert er sich.
 

JimPanse

Bekanntes Mitglied
Nein, das stimmt nicht.

Mojarra ist die JSF-Implementierung von Sun und MyFaces eine Open-Source Implementierung unter Apache-Lizenz. Man sollte es vermeiden die beide zusammen zu verwenden.

Jap hast fast recht.... "MyFaces ist eine weitere Laufzeitumgebung für JSF-Anwendungen", müsste es richtig heißen und unabhängig von der SUN-RI Implementierung.

Benötige ich auch die jsf-facelets.jar?
Nö.

Erst beim Deploytask von Ant beschwert er sich.

Dann scheint dein compile-task nicht das Verzeichnis verwenden unter dem deine Web-Libs liegen!
 

mistersativa

Mitglied
Ein Kollege hat mir geholfen

<path id="dao.compile.classpath">
<path refid="hibernate.classpath"/>
<pathelement location="${commons-lang.jar}"/>
<pathelement location="${commons-logging.jar}"/>
<fileset dir="${spring.dir}" includes="*.jar"/>
<fileset dir="${jsf.dir}" includes="*.jar" />
</path>

Das Problem war, Der Eintrag "<fileset dir="${jsf.dir}" includes="*.jar" />" im Classpath hat gefehlt.
 

Ähnliche Java Themen

Neue Themen


Oben