Цитата(ivg @ 21.8.2008, 21:22 ) | | А покажите код фильтра и конфиг его. |
| Код | package com.nw.ims.cap.web.mobile;
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.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class MobileFilter implements Filter {
public static final String MPA_REDIRECT_FLAG_KEY = "MPA_REDIRECT_FLAG_KEY"; public static final String MPA_URL_REWRITING_KEY = "MPA_URL_REWRITING_KEY"; public void destroy() { }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = new MobileHttpServletRequest((HttpServletRequest) request); HttpServletResponse httpResponse = new MobileHttpServletResponse((HttpServletResponse) response); httpRequest.setAttribute(MPA_REDIRECT_FLAG_KEY, new Boolean (true)); if (httpRequest.getCookies() == null && httpRequest.getSession().getId() != null) { httpRequest.setAttribute(MPA_URL_REWRITING_KEY, new Boolean (true)); } String encType = MobileRouter.encType(httpRequest.getHeaders("accept")); if (encType != null) httpResponse.setContentType(encType); chain.doFilter( httpRequest, httpResponse ); }
public void init(FilterConfig arg0) throws ServletException { }
}
|
Говорю сразу, encType возвращается не null, дебажил 
| Код | <filter> <filter-name>MobileFilter</filter-name> <filter-class>com.nw.ims.cap.web.mobile.MobileFilter</filter-class> </filter> ... <filter-mapping> <filter-name>MobileFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
|
Добавлено через 5 минут и 32 секунды Собственно что пораждает эту проблему. Вот кусок сгенерированного из jsp java кода:
| Код | public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException {
JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; String _value = null; javax.servlet.jsp.tagext.Tag _jspx_curTag = null;
try {
if (_jspx_inited == false) { synchronized (this) { if (_jspx_inited == false) { _jspx_init(); _jspx_inited = true; } } } _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO-8859-1");
|
Собственно вот этот setContentType и перебивает тот, что был выставлен в фильтре. В этом и проблема :( То, что перебивается именно в этом месте проверял опять же debug-ом...
Сам jsp ни где content type не выставлял...
| Код | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML Mobile 1.0//EN" "http://www.openwave.com/dtd/xhtml-mobile10.dtd">
<%@ taglib uri="/imstags" prefix="ims" %> <%@ page import="com.nw.ims.cap.web.mobile.*" %> <%@ page import="com.nw.ims.cap.web.util.*" %> <%@ page import="com.nw.ims.cap.web.uif.mpa.servlet.LoginServlet" %>
<ims:page prefix="pages.login"> <% WebBundle wb = new WebBundle(pageContext); String message = (String) request.getAttribute(LoginServlet.MESSAGE); if (message == null) { message = request.getParameter(LoginServlet.MESSAGE); } if (message!=null) { message = wb.getString(message,false); } %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title><%= wb.getString("pages.common.mpaTitle",false) %></title> <meta http-equiv="Cache-Control" content="no-cache"/> </head> <body> <% if (message!=null) { %> <b><%= message %></b> <% } String encURL; if (request.getAttribute("MPA_URL_REWRITING_KEY") != null) { encURL = response.encodeURL("/mpa/direct/loginServlet"); } else { encURL = "/mpa/direct/loginServlet"; } %> <form action="<%= encURL %>" method="post"> <% String userName = ""; Cookie [] cookies = request.getCookies(); if (cookies != null) { for(int i = 0; i < cookies.length; i++) { if (cookies[i].getName().equals("PA.USERNAME")) { userName = cookies[i].getValue(); break; } } } %> <div> <ims:string name="usernamelabel" /><br/> <input type="text" name="userName" size="10" value="<%= userName %>"/><br/> </div> <div> <ims:string name="passwordlabel" /><br/> <input type="password" name="passwd" size="10" /><br/> </div> <div> <input type="submit" value="<%= wb.getString("submitlabel") %>" /> </div> </form> </body> </html> </ims:page>
|
|