ADF/WebCenter :Bypass the IE Compatibility Mode in IE8/9

0

Step 1 :Create a filter MyServletFilter.java

 

public class MyServletFilter implements Filter{
public MyServletFilter() {
super();
}
public void init(FilterConfig filterConfig) {
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException,
ServletException {
if (servletRequest instanceof HttpServletRequest){
HttpServletRequest req = (HttpServletRequest)servletRequest;
MyServletRequestWrapper wrapper = new MyServletRequestWrapper(req);
filterChain.doFilter(wrapper, servletResponse);
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
return;
}
public void destroy() {
}
}

Step 2 : Create MyServletRequestWrapper.java class

 

public class MyServletRequestWrapper extends HttpServletRequestWrapper {
public MyServletRequestWrapper(HttpServletRequest httpServletRequest) {
super(httpServletRequest);
}
@Override
public String getHeader(String header_key) {
String header_val = super.getHeader(header_key);
if (header_key.equalsIgnoreCase("user-agent")) {
int index = header_val.indexOf("IE 7.0");
if (index != -1) {
StringBuffer temp_val = new StringBuffer(header_val);
temp_val = temp_val.replace(index, index + 6, "IE 8.0");
header_val = temp_val.toString();
}
}
return header_val;
}
@Override
public Enumeration getHeaders(String header_key) {
if (!header_key.equalsIgnoreCase("user-agent")) {
return super.getHeaders(header_key);
}
Vector<String> list = new Vector<String>(1);
String temp = this.getHeader(header_key);
list.add(temp);
return list.elements();
}
}

Step 3 :Register MyServletFilter in web.xml


<filter>
<filter-name>myServletFilter</filter-name>
<filter-class>com.servlet.filter.MyServletFilter</filter-class>
</filter>

 

Step 4: Add filter mapping in web.xml


<filter-mapping>
<filter-name>myServletFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

You are done J


0 comments: