Método "request.setCharacterEncoding" não encontrado

Pessoal,

 Estou com um problema aqui que não estou conseguindo resolver. Tenho uma aplicação web que utiliza ajax com JQuery para enviar informações via POST, mas estou com problemas de encoding, portanto criei um filtro que para cada requisição, seta o encoding do request para "ISO-8859-1", como mostrado abaixo:
public class EncodingFilter implements Filter {

    // The filter configuration object we are associated with.  If
    // this value is null, this filter instance is not currently
    // configured. 
    private FilterConfig filterConfig = null;
    private String encoding = "ISO-8859-1";

       
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
	throws IOException, ServletException {
        
        request.setCharacterEncoding(encoding);

        chain.doFilter(request, response);
       

	
    }
    
    /**
     * Destroy method for this filter 
     */
    public void destroy() { 
    }

    /**
     * Init method for this filter 
     */
    public void init(FilterConfig filterConfig) { 
	this.filterConfig = filterConfig;
        String encodingParam = filterConfig.getInitParameter("encoding");
        if (encodingParam != null) {
          encoding = encodingParam;
        }
	
    }

    

}
Mas quando tento compilar o filtro aparece a seguinte mensagem:
cannot find symbol
symbol  : method setCharacterEncoding(java.lang.String)
location: interface javax.servlet.ServletRequest
        request.setCharacterEncoding(encoding);
1 error
O problema é que o método existe na classe ServletRequest do jar "servlet-api.jar" que está na biblioteca do tomcat que está no classpath, como visto abaixo:
package javax.servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;

public interface ServletRequest {

    public Object getAttribute(String name);

    public Enumeration getAttributeNames();

    public String getCharacterEncoding();

    public void setCharacterEncoding(String env) throws UnsupportedEncodingException;

    public int getContentLength();

    public String getContentType();

    public ServletInputStream getInputStream() throws IOException;

    public String getParameter(String name);

    public Enumeration getParameterNames();

    public String[] getParameterValues(String name);

    public Map getParameterMap();

    public String getProtocol();

    public String getScheme();

    public String getServerName();

    public int getServerPort();

    public BufferedReader getReader() throws IOException;

    public String getRemoteAddr();

    public String getRemoteHost();

    public void setAttribute(String name, Object o);

    public void removeAttribute(String name);

    public Locale getLocale();

    public Enumeration getLocales();

    public boolean isSecure();

    public RequestDispatcher getRequestDispatcher(String path);

    public String getRealPath(String path);

    public int getRemotePort();

    public String getLocalName();

    public String getLocalAddr();

    public int getLocalPort();
}
Se o método está lá minha aplicação não deveria dar erro de compilação, e eu também vasculhei pra ver se estava utilizando duas "servlet-api.jar" no classpath e não existe nenhuma. Alguém já passou por isso ou sabe o motivo desse erro? Conto com o apoio de vocês. Obrigado.

Você deve setar o encoding na resposta, e através a interface HttpServletResponse. Ficando assim:

((HttpServletResponse) response).setCharacterEncoding(encoding);

Cara, acontece o mesmo erro, só que agora ele informa que não conseguiu localizar o método “setCharacterEncoding” na classe HttpServletResponse.

Vou fazer uma classe aqui e posto.

Segue a classe que faz o encoding. Não tive nenhum problema para compilar.

[code]package br.com.guj.forum;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class CharacterEncodingFilter implements Filter {

private String	encoding;

@Override
public void destroy() {
	//
}

@Override
public void init(FilterConfig config) throws ServletException {
	this.encoding = config.getInitParameter("encoding");
}

@Override
public void doFilter(ServletRequest request, ServletResponse reponse, FilterChain chain) throws IOException, ServletException {
	HttpServletResponse httpResponse = (HttpServletResponse) reponse;
	httpResponse.setCharacterEncoding(this.encoding);
	chain.doFilter(request, reponse);
}

}[/code]

Cara,

 Enquanto você postava eu consegui resolver o problema. No meu classpath eu tinha um jar "servlet.jar" que estava na biblioteca do "jasperrrport-3.5.2". Antes de postar o problema aqui no fórum eu havia removido esse jar do classpath, mas não havia removido da pasta onte o Netbeans buscas os ".jars" das bibliotecas. Então, acho que de alguma forma, mesmo que no Netbeans você configure para não buscal mais o ".jar" de uma determinada biblioteca, se esse ".jar" ainda estiver na pasta apontada anteriormente, ele continua buscando. Então deletei o ".jar" do meu disco, reiniciei o Netbeans e ele conseguir achar o método normalmente. Obrigado pelo apoio aí viu. Valeu mesmo.