craigmcc    01/08/06 15:36:27

  Modified:    src/share/org/apache/struts/util MessageResources.java
  Log:
  Fix for Bugzilla #2233 (single quotes in application resources do not show
  up even though they are properly escaped with "\").
  
  The underlying problem is that the messages strings in your application
  resources files are processed twice -- once when loaded by Property.load()
  and once when the message is formatted with MessageFormat.format().  The
  first call converts occurrences of "\'" to "'" in the format string; but
  MessageFormat has an undocumented requirement that single quotes be
  escaped by an extra single quote (not by a backslash).  The patch escapes
  the format string as expected by MessageFormat so that this actually
  happens.
  
  This affects the lookup and display of message strings in all of the
  following tags:
    <html:errors>
    <html:image>
    <html:img>
    <html:messages>
    <html:option
  
  PR: Bugzilla #2233
  Submitted by: [EMAIL PROTECTED]
  
  Revision  Changes    Path
  1.11      +28 -5     
jakarta-struts/src/share/org/apache/struts/util/MessageResources.java
  
  Index: MessageResources.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/MessageResources.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- MessageResources.java     2001/04/18 23:32:35     1.10
  +++ MessageResources.java     2001/08/06 22:36:27     1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/MessageResources.java,v 1.10 
2001/04/18 23:32:35 craigmcc Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/04/18 23:32:35 $
  + * $Header: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/MessageResources.java,v 1.11 
2001/08/06 22:36:27 craigmcc Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/08/06 22:36:27 $
    *
    * ====================================================================
    * 
  @@ -89,7 +89,7 @@
    * application server environments.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.10 $ $Date: 2001/04/18 23:32:35 $
  + * @version $Revision: 1.11 $ $Date: 2001/08/06 22:36:27 $
    */
   
   public abstract class MessageResources implements Serializable {
  @@ -317,7 +317,7 @@
                    else
                        return ("???" + formatKey + "???");
                }
  -             format = new MessageFormat(formatString);
  +             format = new MessageFormat(escape(formatString));
                formats.put(formatKey, format);
            }
   
  @@ -455,6 +455,29 @@
   
   
       // ------------------------------------------------------ Protected Methods
  +
  +
  +    /**
  +     * Escape any single quote characters that are included in the specified
  +     * message string.
  +     *
  +     * @param string The string to be escaped
  +     */
  +    protected String escape(String string) {
  +
  +        if ((string == null) || (string.indexOf('\'') < 0))
  +            return (string);
  +        int n = string.length();
  +        StringBuffer sb = new StringBuffer(n);
  +        for (int i = 0; i < n; i++) {
  +            char ch = string.charAt(i);
  +            if (ch == '\'')
  +                sb.append('\'');
  +            sb.append(ch);
  +        }
  +        return (sb.toString());
  +
  +    }
   
   
       /**
  
  
  

Reply via email to