|
18 | 18 | import java.io.Writer; |
19 | 19 | import java.util.Collections; |
20 | 20 |
|
| 21 | +import javax.servlet.ServletException; |
21 | 22 | import javax.servlet.http.HttpServletRequest; |
22 | 23 | import javax.servlet.http.HttpServletResponse; |
23 | 24 |
|
| 25 | +import grails.util.GrailsWebUtil; |
24 | 26 | import org.codehaus.groovy.grails.commons.GrailsApplication; |
25 | 27 | import org.codehaus.groovy.grails.commons.GrailsClassUtils; |
26 | 28 | import org.codehaus.groovy.grails.exceptions.DefaultStackTraceFilterer; |
|
31 | 33 | import org.codehaus.groovy.grails.web.mapping.UrlMappingsHolder; |
32 | 34 | import org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequest; |
33 | 35 | import org.codehaus.groovy.grails.web.util.WebUtils; |
| 36 | +import org.springframework.beans.BeansException; |
34 | 37 | import org.springframework.web.context.WebApplicationContext; |
35 | 38 | import org.springframework.web.context.request.RequestAttributes; |
36 | 39 | import org.springframework.web.context.request.RequestContextHolder; |
|
47 | 50 | */ |
48 | 51 | public class ErrorHandlingServlet extends GrailsDispatcherServlet { |
49 | 52 |
|
| 53 | + private static final String CONFIG_OPTION_GSP_ENCODING = "grails.views.gsp.encoding"; |
50 | 54 | private static final long serialVersionUID = 8792197458391395589L; |
51 | 55 | private static final String GSP_SUFFIX = ".gsp"; |
52 | 56 | private static final String JSP_SUFFIX = ".jsp"; |
53 | 57 | 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 | + } |
54 | 71 |
|
55 | 72 | @Override |
56 | 73 | protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException { |
@@ -122,7 +139,7 @@ protected void doDispatch(final HttpServletRequest request, final HttpServletRes |
122 | 139 | View v; |
123 | 140 | try { |
124 | 141 | if (!response.isCommitted()) { |
125 | | - response.setContentType(TEXT_HTML); |
| 142 | + response.setContentType("text/html;charset="+defaultEncoding); |
126 | 143 | } |
127 | 144 | v = WebUtils.resolveView(request, urlMappingInfo, viewName, viewResolver); |
128 | 145 | v.render(Collections.EMPTY_MAP, request, response); |
|
0 commit comments