Skip to content

Commit e9084ff

Browse files
committed
fix for GRAILS-8790 "Wrong character encoding in 404 view gsp"
1 parent b67cc42 commit e9084ff

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

grails-web/src/main/groovy/org/codehaus/groovy/grails/web/servlet/ErrorHandlingServlet.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import java.io.Writer;
1919
import java.util.Collections;
2020

21+
import javax.servlet.ServletException;
2122
import javax.servlet.http.HttpServletRequest;
2223
import javax.servlet.http.HttpServletResponse;
2324

25+
import grails.util.GrailsWebUtil;
2426
import org.codehaus.groovy.grails.commons.GrailsApplication;
2527
import org.codehaus.groovy.grails.commons.GrailsClassUtils;
2628
import org.codehaus.groovy.grails.exceptions.DefaultStackTraceFilterer;
@@ -31,6 +33,7 @@
3133
import org.codehaus.groovy.grails.web.mapping.UrlMappingsHolder;
3234
import org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequest;
3335
import org.codehaus.groovy.grails.web.util.WebUtils;
36+
import org.springframework.beans.BeansException;
3437
import org.springframework.web.context.WebApplicationContext;
3538
import org.springframework.web.context.request.RequestAttributes;
3639
import org.springframework.web.context.request.RequestContextHolder;
@@ -47,10 +50,24 @@
4750
*/
4851
public class ErrorHandlingServlet extends GrailsDispatcherServlet {
4952

53+
private static final String CONFIG_OPTION_GSP_ENCODING = "grails.views.gsp.encoding";
5054
private static final long serialVersionUID = 8792197458391395589L;
5155
private static final String GSP_SUFFIX = ".gsp";
5256
private static final String JSP_SUFFIX = ".jsp";
5357
private static final String TEXT_HTML = "text/html";
58+
public static final String UTF_8 = "UTF-8";
59+
private String defaultEncoding;
60+
61+
@Override
62+
protected void initFrameworkServlet() throws ServletException, BeansException {
63+
super.initFrameworkServlet();
64+
65+
final GrailsApplication grailsApplication = GrailsWebUtil.lookupApplication(getServletContext());
66+
String encoding = (String) grailsApplication.getFlatConfig().get(CONFIG_OPTION_GSP_ENCODING);
67+
if (encoding != null) {
68+
defaultEncoding = encoding;
69+
}
70+
}
5471

5572
@Override
5673
protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException {
@@ -122,7 +139,7 @@ protected void doDispatch(final HttpServletRequest request, final HttpServletRes
122139
View v;
123140
try {
124141
if (!response.isCommitted()) {
125-
response.setContentType(TEXT_HTML);
142+
response.setContentType("text/html;charset="+defaultEncoding);
126143
}
127144
v = WebUtils.resolveView(request, urlMappingInfo, viewName, viewResolver);
128145
v.render(Collections.EMPTY_MAP, request, response);

0 commit comments

Comments
 (0)