Struts 2 addActionMessage não funcionando

Boa noite senhores,

Estou com problemas para usa o metodo addActionMessage() no Struts2

Criei uma tela para registrar os pedidos em 1 restaurante, um form bem simples com 2 campos de texto e 2 combobox, sendo a segunda dependente da primeira, até ai tudo bem (sou novo com struts2 e estou seguindo alguns tutoriais para aprender).

Ele registra no meu DB sem problemas… mas eu nao consigo fazer ele exibir uma simples mensagem de sucesso!

Eis o meu código

Pedido.jsp

         <s:form action="Registrar_Pedido">
            <s:textfield name="numeroDaMesa" label="Número da Mesa"/>            
            <s:select name="tipo" label="Tipo" emptyOption="true" list="#application.tipos" 
                      onchange="this.form.submit()" />
            <s:select name="item" label="Item" emptyOption="true" list="alimentos" 
                      listKey="nome" listValue="nome" />
            <s:textfield name="quantidade" label="Quantidade"/>
            <s:submit/>
        </s:form> 
        <s:actionmessage />

meu Listener que popula a primeira combobox

public class ApplicationListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent cse) {

        try {
            ControleDLO controle = new ControleDLO();
            List<Alimento> alimentos = controle.ListarAlimentos();
            Map<String, String> tipos = new HashMap<String, String>();

            for (Alimento alimento : alimentos) {
                tipos.put(alimento.getTipo(), alimento.getTipo());
            }

            ServletContext servletContext = cse.getServletContext();
            servletContext.setAttribute("tipos", tipos);
        } catch (DLOException ex) {
            ex.printStackTrace();
        }
    }

    public void contextDestroyed(ServletContextEvent arg0) {
    }
}

Minha classe ActionSupport, uso ModelDriven para jogar a instancia de Pedido na pilha (meu real VO da aplicacao) e nao ter de reescrever novamente a classe.

public class PedidoAction extends ActionSupport implements ModelDriven {

    private Pedido pedido;

    @Override
    public String execute() {

        if (pedido.getItem().equalsIgnoreCase("") ||
                pedido.getNumeroDaMesa() == 0 ||
                pedido.getQuantidade() == 0) {
            return "combo_vazia";
        } else {
            try {

                pedido.setStatus("aberto");
                pedido.setDataRegistro(new Timestamp(System.currentTimeMillis()));
                ControleDLO controle = new ControleDLO();
                controle.criarPedido(pedido);

                addActionMessage("Pedido realizado com sucesso!");

                return SUCCESS;
            } catch (DLOException ex) {
                ex.printStackTrace();
                return ERROR;
            }
        }
    }

    public Object getModel() {
        pedido = new Pedido();
        return pedido;
    }
}

struts.xml

<struts>
    <package name="Pedido" extends="struts-default">
        <action name="Montar_Pedido" class="action.SelectItemAction">
            <result>/jsp/Pedido.jsp</result>
        </action>
        <action name="Registrar_Pedido" class="action.PedidoAction" method="execute">
            <result name="success" type="chain">Montar_Pedido</result>
            <result name="combo_vazia" type="chain">Montar_Pedido</result>
            <result name="error">/jsp/Erro.jsp
            </result>
        </action>
    </package>
</struts>

Tudo funciona, chamo Montar_Pedido.action… o form eh montado, e enquanto todos os dados do form nao forem preenchidos ele fica em loop (assim consegui manter a segunda combobox compativel com a escolha da primeira) e quando tudo eh preenchido… ele salva na minha base de dados sem problemas.

O problema:

  • eu so consigo exibir minha "addActionMessage(“Pedido realizado com sucesso!”); " no JSP se eu manter o type do resultado como “chain”, o que pra mim nao funciona ja que junto dessa mensagem deve voltar o form limpo pronto pra uso, e o chain mantem o estado da action original… fazendo o form voltar preenchido com um pedido ja registrado.
  • se eu mudar o type para qualquer outro tipo (dispatcher / redirect / redirect-action usando ou nao param) acontecem dois problemas… jogando para o JSP eu tenho um nullpointerexception, jogando para a mesma action apenas a mensagem nao aparece mas a aplicacao continua sem erros.

Agradeço desde ja toda ajuda.

Rodrigo.