Como conseguir uma referência para o ServletContext dentro de um TypeConverter no Struts2?

Estou usando o livro “Struts 2 Projeto e Programação” pra aprender Struts
e nele há um exemplo que não funciona de jeito nenhum.
Na parte de conversão adaptada há o seguinte código de exemplo para converter uma String de um formulario para um Date

public class MyDateConverter extends DefaultTypeConverter {

    public Object convertValue(Map context, Object value, Class toType) {
        if (toType == Date.class) {
            ServletContext servletContext = (ServletContext) 
                    context.get(StrutsStatics.SERVLET_CONTEXT);
            System.out.println("servletContext == null ? " + (servletContext == null));        
            System.out.println("servletContext getClass:" + servletContext.getClass());
            String datePattern = servletContext.getInitParameter("datePattern");
            System.out.println("date pattern:" + datePattern);

            DateFormat format = new SimpleDateFormat(datePattern);
            format.setLenient(false);
            try {
                String[] s = (String[]) value;
                Date date = format.parse(s[0]);
                return date;
            } catch (ParseException e) {
                System.out.println("Error:" + e);
                throw new RuntimeException("Invalid conversion");
            }
        }
        return null;
    }
}

Mas na em que eu rodo o exemplo o contexto está sempre nulo como mostra a linha
servletContext == null ? true

Alguém pode me ajudar?

Eu alterei o código do corversor pra debugar, então deixei desse jeito

public class MyDateConverter extends DefaultTypeConverter {
    public Object convertValue(Map context, Object value, Class toType) {
        if (toType == Date.class) {
        	Collection c = context.values();
        	System.out.println("Inicio do FOREACH");
        	for (Object o : c) {
				System.out.println(o.getClass().getName());
			}
        	System.out.println("Fim do FOREACH");
        }
        return null;
    }
}

Agora o resultado foi esse:

Inicio do FOREACH
java.util.Locale
java.lang.Boolean
java.lang.Boolean
29/10/2011 23:39:54 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
AVISO: Error setting expression ‘transactionDate’ with value ‘[Ljava.lang.String;@641a034d
ognl.MethodFailedException: Method “setTransactionDate” failed for object app07b.Transaction@6fe2161d [java.lang.NoSuchMethodException: app07b.Transaction.setTransactionDate([Ljava.lang.String;)]

Estranho que o código nem chega ao fim do foreach

String datePattern = ServletActionContext.getServletContext().getInitParameter(“datePattern”);

:smiley: