Limpar campos do formulário

Pessoa, boas!! Estou com uma dificuldade em deixar o meu formulário preparado para o próximo registo, ou seja, limpar os campos do form. Depois do método create eu envio uma mensagem de confirmação e chamo o meu método limpar que nele tem uma instância do meu objecto e da minha lista mas não limpar o form.

Visão

Minha ManagedBean Documento
/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */

package edu.ucan.sighp.managedbean.ct;

import edu.ucan.sighp.entity.ct.CtDiario;
import edu.ucan.sighp.entity.ct.CtDocumento;
import edu.ucan.sighp.session.ct.CtDiarioFacade;
import edu.ucan.sighp.session.ct.CtDocumentoFacade;
import edu.ucan.sighp.util.ct.Numeros;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.application.NavigationHandler;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
*

  • @author banguela
    */
    @ManagedBean
    @SessionScoped
    public class DocumentoBean {

    @EJB
    private CtDiarioFacade ctDiarioFacade;
    @EJB
    private CtDocumentoFacade ctDocumentoFacade;
    private CtDocumento documuento;
    private CtDocumento documuentoSelecionado;
    private List listarDocumentos = null;
    private List listarDiarios = null;
    private int codigoDiario = 0;
    private Integer numeroDocumento = 0;
    private String descricaoDocumento;
    private Date dataRegistroDocumento;

    public DocumentoBean() {

     documuento = new CtDocumento();
     listarDiarios = null;
     dataRegistroDocumento = new Date();
    

    }

    public CtDocumento getDocumuento() {
    return documuento;
    }

    public void setDocumuento(CtDocumento documuento) {
    this.documuento = documuento;
    }

    public CtDocumento getDocumentoAlterar(String codigo){

     return ctDocumentoFacade.find(Integer.parseInt(codigo));
    

    }

    public List getListarDocumentos() {
    return ctDocumentoFacade.findAll();

    }

    public void setListarDocumentos(List listarDocumentos) {
    this.listarDocumentos = listarDocumentos;
    }

    public List getListarDiarios() {
    return ctDiarioFacade.findAll();
    }

    public String getDescricaoDocumento() {
    return descricaoDocumento;
    }

    public void setDescricaoDocumento(String descricaoDocumento) {
    this.descricaoDocumento = descricaoDocumento;
    }

    public Date getDataRegistroDocumento() {
    return dataRegistroDocumento;
    }

    public void setDataRegistroDocumento(Date dataRegistroDocumento) {
    this.dataRegistroDocumento = dataRegistroDocumento;
    }

    public String edit(CtDocumento documento) {

     this.documuento = documento;
    
     return "alterarDocumento";
    

    }

    public String gravar() {

     List<CtDocumento> list = getListarDocumentos();
     CtDocumento doc;
    
     try {
    
        
         documuento.setDescricaodocumento(descricaoDocumento);
         documuento.setIddiarioCtDiario(ctDiarioFacade.find(codigoDiario));
         documuento.setNumerodocumento(numeroDocumento);
         documuento.setDataregistrodocuemnto(new java.sql.Timestamp(dataRegistroDocumento.getTime())); 
    
         //Verifico se o item já está no Banco de Dados
         for (int i = 0; i < list.size(); i++) {
    
             doc = list.get(i);
    
             if (doc.getDescricaodocumento().equals(descricaoDocumento)) {
    
                 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "O documento em exercício já existe."));
                 return "formDocumento.xhtml";
    
             }
    
         }
    
         ctDocumentoFacade.create(documuento);
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "", "O documento "+documuento.getDescricaodocumento()+" foi salvo com sucesso!"));
         limpar();
         repreencherLista();
        
    
     } catch (Exception ex) {
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao salvar o documento  " +documuento.getDescricaodocumento()+ ", verifique todos os parametros de inserção!", ""));
         ex.printStackTrace();
        
     }
    
     return "formDocumento.xhtml";
    

    }

    public String alterar() {

     try {
         
         documuento.setIddiarioCtDiario(ctDiarioFacade.find(documuento.getIddiarioCtDiario().getIddiario()));
         this.ctDocumentoFacade.edit(this.documuento);
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Os Dados foram actualizados com sucesso!"));
         repreencherLista();
         limpar();
    
     } catch (Exception exception) {
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Impossível alterar o documento "+ documuento.getDescricaodocumento()+" Verifique se está sendo utilizado em algum registro."));
         return "formDocumento.xhtml";
     }
    
     return "listarDocumento.xhtml";
    

    }

    public void eliminar(CtDocumento doc) {

     try {
    
         ctDocumentoFacade.remove(ctDocumentoFacade.find(doc.getIddocumento()));
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "O Documento "+doc.getDescricaodocumento()+" foi eliminada com sucesso!", ""));
    
         repreencherLista();
     } catch (Exception exception) {
         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Impossível eliminar o ano econômico "+doc.getDescricaodocumento()+". Verifique se está sendo utilizado em algum registro.", ""));
     }
    

    }

    public void redirecionar(String pagina) {
    FacesContext context = FacesContext.getCurrentInstance();
    NavigationHandler navHandler = context.getApplication().getNavigationHandler();
    navHandler.handleNavigation(context, null, pagina);
    }

    public void redirecionarPagina() {
    redirecionar(“listarDocumento.xhtml”);
    }

    public void repreencherLista() {

     listarDocumentos = ctDocumentoFacade.findAll();
    

    }

    public void limpar() {
    documuento = new CtDocumento();
    listarDiarios = new ArrayList<>();

    }

    public int getCodigoDiario() {
    return codigoDiario;
    }

    public void setCodigoDiario(int codigoDiario) {
    this.codigoDiario = codigoDiario;
    }

    public CtDocumento getDocumuentoSelecionado() {
    return documuentoSelecionado;
    }

    public void setDocumuentoSelecionado(CtDocumento documuentoSelecionado) {
    this.documuentoSelecionado = documuentoSelecionado;
    }

    public List getNumero(){

    List numeros = new ArrayList();

    for(int i = 1; i<=9; i++){
        
        Numeros valor = new Numeros();
        valor.setCodigo(i);
        numeros.add(valor);
        
        
    }
     
    return numeros;
    

    }

    public Integer getNumeroDocumento() {
    return numeroDocumento;
    }

    public void setNumeroDocumento(Integer numeroDocumento) {
    this.numeroDocumento = numeroDocumento;
    }

}

Método limpar
public void limpar() {
documuento = new CtDocumento();
listarDiarios = new ArrayList<>();

}