/** * Sets the locale of the response, setting the headers (including the Content-Type's charset) as * appropriate. This method should be called before a call to {@link #getWriter}. By default, the * response locale is the default locale for the server. * * @see #getLocale * @param locale the Locale of the response */ public void setLocale(Locale locale) { if (locale == null || isCommitted()) return; _locale = locale; setHeader(HttpFields.__ContentLanguage, locale.toString().replace('_', '-')); if (this._outputState == 0) { /* get current MIME type from Content-Type header */ String type = _httpResponse.getField(HttpFields.__ContentType); if (type == null) { // servlet did not set Content-Type yet // so lets assume default one type = "application/octet-stream"; } HttpContext httpContext = _servletHttpRequest.getServletHandler().getHttpContext(); if (httpContext instanceof ServletHttpContext) { String charset = ((ServletHttpContext) httpContext).getLocaleEncoding(locale); if (charset != null && charset.length() > 0) { int semi = type.indexOf(';'); if (semi < 0) type += "; charset=" + charset; else if (!_charEncodingSetInContentType) type = type.substring(0, semi) + "; charset=" + charset; setHeader(HttpFields.__ContentType, type); } } } }