Hello, I made a patch for the bug I submitted 29824, http://issues.apache.org/bugzilla/show_bug.cgi?id=29824 and I attached the patch with the bug report a week ago. But I don't see it being integrated. Should I just wait to see some comitter to pick it up, or do I need to ask for it? I'm attaching the patch with this email.
-- KUROSAKA ("Kuro") Teruhiko, San Francisco, California, USA Internationalization Consultant --- now available for new contracts! http://www.bhlab.com/
--- ../../../refsrc/jakarta-struts-1.1-src/src/share/org/apache/struts/action/RequestProcessor.java Mon Jun 30 04:50:50 2003 +++ src/share/org/apache/struts/action/RequestProcessor.java Sun Jun 27 04:48:03 2004 @@ -233,6 +233,9 @@ processContent(request, response); processNoCache(request, response); + // Set the encoding of the request (parameter) if requested + processRequestEncoding(request, response); + // General purpose preprocessing hook if (!processPreprocess(request, response)) { return; @@ -510,6 +513,34 @@ } + + /** + * <p>Set the character encoding as which the incoming request should + * be interpreted. This method uses the value specified as the + * <code>requestEncoding</code> attribute of the <controller> tag. + * Requests are usually encoded in the same character encoding + * of the HTML form, so that encoding should be specified. + * See [EMAIL PROTECTED] org.apache.struts.config.ControllerConfig} documentation + * for further details.</p> + * @param request The servlet request we are processing + * @param response The servlet response we are creating (dummy --- not used) + * @exception ServletException if thrown by HttpServletRequest.setCharacterEncoding() + * @since Struts 1.2 + */ + protected void processRequestEncoding(HttpServletRequest request, + HttpServletResponse response) + throws ServletException{ + + String reqEnc = moduleConfig.getControllerConfig().getRequestEncoding(); + if (reqEnc != null) { + try{ + request.setCharacterEncoding(reqEnc); + }catch(java.io.UnsupportedEncodingException uex){ + throw new ServletException(uex); + } + } + + } /** * Ask our exception handler to handle the exception. Return the --- ../../../refsrc/jakarta-struts-1.1-src/src/share/org/apache/struts/config/ControllerConfig.java Mon Jun 30 04:51:52 2003 +++ src/share/org/apache/struts/config/ControllerConfig.java Sun Jun 27 05:10:52 2004 @@ -124,6 +124,49 @@ this.contentType = contentType; } + /** + * <p>The character encoding in which each request is encoded. + * Requests are usually encoded in the same character encoding + * of the HTML form, so that encoding should be specified.</p> + * + * <p>You <strong>must</strong> specify the encoding one way or the other + * in order for ActionForm to be able to interpret requests encoded in + * any encoding other than ISO-8859-1, including <strong>UTF-8</strong>.</p> + * + * <p> This nonsense is because major web browsers do not + * add charset parameter in the Content-Type headers of the requests + * they generate, for probably historical reasons.</p> + * + * <p>Having a character encoding in the configuration file has an obvious + * limitation; only one character encoding can be specified + * for the entire module. This limitation virtually means + * a <strong>multi-locale application must use the UTF-8 encoding</strong>, unless + * all the locales it supports can be based on a traditional encoding + * (like French and German). + * For example, if an application needs to supports the French + * locale (which traditionally uses the ISO-8859-1 encoding) and + * the Japanese locale (Shift_JIS), then the application must + * use UTF-8 encoding instead. If this is going to be a problem + * and if you wish to switch the encoding according to the current locale, + * consider calling request.setCharacterEncoding() by yourself + * from reset() of ActionForm subclasses, instead of using + * this requestEncoding attribute.</p> + * + * @since Struts 1.2 + */ + protected String requestEncoding = null; // Let container decide (Most likely ISO-8859-1) + + public String getRequestEncoding() { + return (this.requestEncoding); + } + + public void setRequestEncoding(String requestEncoding) { + if (configured) { + throw new IllegalStateException("Configuration is frozen"); + } + this.requestEncoding = requestEncoding; + } + /** * The debugging detail level that determines logging verbosity. @@ -377,6 +420,10 @@ sb.append(",contentType="); sb.append(this.contentType); } + if (this.requestEncoding != null) { + sb.append(",requestEncoding="); + sb.append(this.requestEncoding); + } if (this.forwardPattern != null) { sb.append(",forwardPattern="); sb.append(this.forwardPattern); --- ../../../refsrc/jakarta-struts-1.1-src/web/blank/WEB-INF/struts-config.xml Mon Jun 30 04:51:22 2003 +++ web/blank/WEB-INF/struts-config.xml Sat Jun 26 06:55:22 2004 @@ -264,10 +264,17 @@ <!-- ===================================== Controller Configuration --> - +<!-- + Use requestEncoding attribute to specify the character encoding + of the request, if it is not ISO-8859-1. The request's + character encoding is usually the same as the encoding of the + form that submits the request, which is typically specified + in JSP using the page directive's contentType option, as in: + <%@ page contentType="text/html; charset=UTF-8" %> +--> <controller - + requestEncoding="UTF-8" processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> --- ../../../refsrc/jakarta-struts-1.1-src/web/blank/pages/Welcome.jsp Mon Jun 30 04:52:18 2003 +++ web/blank/pages/Welcome.jsp Sat Jun 26 06:54:06 2004 @@ -1,3 +1,4 @@ +<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> --- ../../../refsrc/jakarta-struts-1.1-src/doc/userGuide/building_controller.xml Mon Jun 30 04:51:36 2003 +++ doc/userGuide/building_controller.xml Sat Jun 26 06:23:54 2004 @@ -18,6 +18,7 @@ <author>David Graham</author> <author>Tim O'Brien</author> <author>Phil Steitz</author> + <author>KUROSAKA "Kuro" Teruhiko</author> </properties> <body> @@ -201,6 +202,17 @@ <td> If appropriate, set the following response headers: "Pragma", "Cache-Control", and "Expires". + </td> + </tr> + + <tr> + <td> + <code>processRequestEncoding</code> + </td> + <td> + If the attribute is specified in the controller tag, + the specified character encoding is used in interpretation of + all requests. </td> </tr> --- ../../../refsrc/jakarta-struts-1.1-src/doc/userGuide/configuration.xml Mon Jun 30 04:51:12 2003 +++ doc/userGuide/configuration.xml Sat Jun 26 06:30:46 2004 @@ -13,6 +13,7 @@ <author>Yann Cebron</author> <author>David Graham</author> <author>Tim O'Brien</author> + <author>KUROSAKA "Kuro" Teruhiko</author> </properties> <body> @@ -103,6 +104,13 @@ May be overridden by the Action, JSP, or other resource to which the request is forwarded. [text/html] (optional) + </li> + + <li> + <b>requestEncoding</b> - Character encoding used for parsing + all requests. This usually should match with the encoding of + the originating forms. + [ISO-8859-1] (optional) </li> <li>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]