Author: jcompagner
Date: Sat Oct  4 14:43:35 2008
New Revision: 701716

URL: http://svn.apache.org/viewvc?rev=701716&view=rev
Log:
fix for setting the char encoding at the right times WICKET-1816

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=701716&r1=701715&r2=701716&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 Sat Oct  4 14:43:35 2008
@@ -258,7 +258,8 @@
                                        else
                                        {
                                                
httpServletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
-                                               
httpServletResponse.setDateHeader("Expires", System.currentTimeMillis() + 
Duration.hours(1).getMilliseconds());
+                                               
httpServletResponse.setDateHeader("Expires", System.currentTimeMillis() +
+                                                       
Duration.hours(1).getMilliseconds());
                                        }
                                }
                        }
@@ -322,42 +323,7 @@
                                
Thread.currentThread().setContextClassLoader(newClassLoader);
                        }
 
-                       // If the request does not provide information about 
the encoding of
-                       // its body (which includes POST parameters), than 
assume the
-                       // default encoding as defined by the wicket 
application. Bear in
-                       // mind that the encoding of the request usually is 
equal to the
-                       // previous response.
-                       // However it is a known bug of IE that it does not 
provide this
-                       // information. Please see the wiki for more details 
and why all
-                       // other browser deliberately copied that bug.
-                       if (servletRequest.getCharacterEncoding() == null)
-                       {
-                               try
-                               {
-                                       // It this request is a wicket-ajax 
request, we need decode the
-                                       // request always by UTF-8, because the 
request data is encoded by
-                                       // encodeUrlComponent() JavaScript 
function, which always encode data
-                                       // by UTF-8.
-                                       String wicketAjaxHeader = 
servletRequest.getHeader("wicket-ajax");
-                                       if (wicketAjaxHeader != null && 
wicketAjaxHeader.equals("true"))
-                                       {
-                                               
servletRequest.setCharacterEncoding("UTF-8");
-                                       }
-                                       else
-                                       {
-                                               // The encoding defined by the 
wicket settings is used to
-                                               // encode the responses. Thus, 
it is reasonable to assume
-                                               // the request has the same 
encoding. This is especially
-                                               // important for forms and form 
parameters.
-                                               
servletRequest.setCharacterEncoding(webApplication.getRequestCycleSettings()
-                                                       
.getResponseRequestEncoding());
-                                       }
-                               }
-                               catch (UnsupportedEncodingException ex)
-                               {
-                                       throw new 
WicketRuntimeException(ex.getMessage());
-                               }
-                       }
+                       checkCharacterEncoding(servletRequest);
 
                        // Create a new webrequest
                        final WebRequest request = 
webApplication.newWebRequest(servletRequest);
@@ -467,6 +433,46 @@
                return true;
        }
 
+       private void checkCharacterEncoding(final HttpServletRequest 
servletRequest)
+       {
+               // If the request does not provide information about the 
encoding of
+               // its body (which includes POST parameters), than assume the
+               // default encoding as defined by the wicket application. Bear 
in
+               // mind that the encoding of the request usually is equal to the
+               // previous response.
+               // However it is a known bug of IE that it does not provide this
+               // information. Please see the wiki for more details and why all
+               // other browser deliberately copied that bug.
+               if (servletRequest.getCharacterEncoding() == null)
+               {
+                       try
+                       {
+                               // It this request is a wicket-ajax request, we 
need decode the
+                               // request always by UTF-8, because the request 
data is encoded by
+                               // encodeUrlComponent() JavaScript function, 
which always encode data
+                               // by UTF-8.
+                               String wicketAjaxHeader = 
servletRequest.getHeader("wicket-ajax");
+                               if (wicketAjaxHeader != null && 
wicketAjaxHeader.equals("true"))
+                               {
+                                       
servletRequest.setCharacterEncoding("UTF-8");
+                               }
+                               else
+                               {
+                                       // The encoding defined by the wicket 
settings is used to
+                                       // encode the responses. Thus, it is 
reasonable to assume
+                                       // the request has the same encoding. 
This is especially
+                                       // important for forms and form 
parameters.
+                                       
servletRequest.setCharacterEncoding(webApplication.getRequestCycleSettings()
+                                               .getResponseRequestEncoding());
+                               }
+                       }
+                       catch (UnsupportedEncodingException ex)
+                       {
+                               throw new 
WicketRuntimeException(ex.getMessage());
+                       }
+               }
+       }
+
        /**
         * @return The filter config of this WicketFilter
         */
@@ -1011,6 +1017,8 @@
                                // If resource found and it is cacheable
                                if ((resource != null) && 
resource.isCacheable())
                                {
+                                       // first check the char encoding for 
getting the parameters
+                                       checkCharacterEncoding(servletRequest);
 
                                        final WebRequest request = 
webApplication.newWebRequest(servletRequest);
                                        // make the session available.


Reply via email to