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.