Category: JSF

Rational Application Developer and Websphere Portal Express

Posted by – January 8, 2009

I just started to use IBM RAD and IBM Websphere Portal few weeks back, IBM RAD is a very complete tool built on top of Eclipse, it has a lot of features that facilitates the work on portlet development, you can create in a few minutes a portlet using Struts or JSF as framework. Once a portlet is created you can build and package this portlet as WAR file to deploy on Websphere Portal.

Websphere Portal is completely updated portal solution, you can run JSR 168 and JSR 286 compliant portlets, you also have the option to create portlets using the IBM specific implementation that contains a lot of additional features.

The entire portal is fully customizable, you can change the portal appearance by adding new themes, all portlets can be added to a portal page by just drag and drop then on a page, access control can be easily done via deep integration with LDAP. You can even use google gadgets on your portal page!

Are you worried about scalability? Don’t worry, you can put several websphere portal instances running on a cluster mode.

Share

Creating a EL function to return browser name

Posted by – January 7, 2009

There are some situations where we need know the browser name to perform some changes on page code, the java code below defines a EL function to help on retrieve the browser name.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package br.eti.faces.el;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

public final class Browser {

    public static String name() {
        FacesContext context=FacesContext.getCurrentInstance();
        HttpServletRequest request=
           (HttpServletRequest)context.getExternalContext().
               getRequest();
        String useragent= request.getHeader("user-agent");
        useragent=useragent.toLowerCase();
        if (useragent.indexOf("opera")!=-1)
            return "opera";
        if (useragent.indexOf("netscape")!=-1)
            return "netscape";
        if (useragent.indexOf("msie")!=-1)
            return "ie";
        if (useragent.indexOf("firefox")!=-1)
            return "firefox";
    return "";
    }
}

More

Share

JBoss Seam and Richfaces

Posted by – December 25, 2008

Yesterday I started a small application using JBoss Seam and Richfaces, after some hours fixing configuration issues and incompatibilities I could finally get a simple crud working.

One of the problems that I had while trying to get the application running was a redirect loop when using seam with myfaces tomahawk, once I removed myfaces tomahawk libs and configuration entries in web.xml the error gone.

Now I have another problem related with Richfaces calendar component, the popup button image isn’t displayed and the javascript for calendar component isn’t loaded too.

Share

bodyguard – Facelets EL functions for Spring Security

Posted by – November 9, 2008

Yesterday I wrote a small set of EL functions to use with spring security, now I can get easy access to spring security roles and authentication info as well.

Here’s an example of how bodyguard can be used in your facelets code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:bg="http://faces.eti.br/bodyguard">
 <body>
   <!-- Display logged message if the user is authenticated -->
   <t:div rendered="#{bg:isAuthenticated()}">
       <h:outputText rendered="#{bg:remoteUser()}" value="Logged!"/>
   </t:div>

   <!-- Display a message indicating if the user is a user or admin -->
   <t:div rendered="#{bg:isUserInAnyRoles('ROLE_USER,ROLE_ADMIN')}">
       <h:outputText
         value="The user #{bg:remoteUser()} is a user or admin."/>
   </t:div>

   <!-- Display a message indicating if the user isn't a user or admin -->
   <t:div rendered="#{bg:isUserNotInRoles('ROLE_USER,ROLE_ADMIN')}">
       <h:outputText
         value="The user #{bg:remoteUser()} isn't a user or admin."/>
   </t:div>

   <!-- Display a message indicating if the user is a user and admin -->
   <t:div rendered="#{bg:isUserInAllRoles('ROLE_USER,ROLE_ADMIN')}">
       <h:outputText
          value="The user #{bg:remoteUser()} is a user and admin."/>
   </t:div>
 </body>
</html>

You can download the bodyguard by clicking here and sources here.

Share

Facelets EL Functions can save your day

Posted by – November 2, 2008

In the last week I had several issues during the development of a jsf application that could be solved by creating few custom Facelets EL functions, let’s take a look on which scenarios Facelets EL functions helped me.

1. Simple loop over a range of numbers

JSF has a lot of components that can be used to iterate over a model and repeat its own child components several times, some of them are Tomahawk’s dataList and Richfaces repeat.

But in all of these components I couldn’t find a way to do a simple iteration on a range of numbers, like repeat all child components starting from 1 and stopping at n number of times.

Maybe you will say: “What about c:forEach? It can do this kind of iteration!”, oh yes, it can, and I tried to use it but it crashes when I pass EL expressions to both begin and end attributes, it only accepts hardcoded values.
More

Share