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]