The last 2 weeks were very interesting, starting at a new customer as a Java developer on a JSF2.0 project.
XPages are based on highly customised version of JSF 1.1 at the base.
Annotations
The big advantage if JSF 2.0 is build in of Annotations. Very useful, like the @Formulas back, in my case, in the old days of Lotus Notes development.
For Managed Bean you can still use the faces-config.xml to control them. But now there is also the @ManagedBean(name=”fooBean”), you can use directly in the Java Class in combination with Scope Annotation, @ViewScoped, @RequestScope or @ApplicationScope.
Keep in mind that if you register also the Managed Bean in the faces-config.xml, this registration will overrule the @ManagedBean annotation on the Class.
Related to @ManagedBean, there is also @ManagedProperty annotation. Which can be used to directly include a Managed Bean inside the Java class. @ManagedProperty has one required parameter, ‘value’, which refer to the Managed Bean name. Inside the Java class you can automatically use the Managed Property.
Spring Framework uses the @Inject annotation to inject objects inside the Java class
Another very useful Annotation is @PostConstruct above a method inside a Java class, as the name suggest it will run as the Managed Bean will be instantiated. There is no need to trigger such a method from within a XPages or some other way.
Expression Language
It is still there and as in XPages very powerful, but in JSF2.0 you not can call getters and setters in a bean, like #{bean.property1}, but also methods, like #{bean.method(argument)}
ProjectStage
In JSF 2.0, in perception, there is new thing, ProjectStage. In the web.xml you can put a tag to specify the current ProjectStage.
[dropshadowbox align=”none” effect=”lifted-both” width=”400px” height=”” background_color=”#ffffff” border_width=”1″ border_color=”#dddddd” ][/dropshadowbox]
The most used values are Development and Production, but there is also something like UnitTest and SystemTest. When you use Development the Application Server will print more debug and log lines to the console, very useful.
Frameworks.
XPages has the excellent Extension Library as framework and toolbox for lots of component, UI and behind the scenes. JSF 2.0 has their frameworks.
Till now I am using PrimeFaces and MyFaces Tomahawk, they are not exclusive for JSF2.0 and higher. But when you look at older versions, there is a lack of functionality.
The 2 frameworks contains lots of components which can be easily integrated inside your application. As specially PrimeFaces has lots code examples.
and more….non JSF
In my project next to JSF, I also use EJB and JPA to set up Persistence to the Oracle Database. With Persistence in place you can easily do CRUD actions on objects in the Relational Database.