You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by dg...@apache.org on 2002/11/12 04:47:43 UTC

cvs commit: jakarta-struts/src/share/org/apache/struts/taglib/html CancelTag.java SubmitTag.java CheckboxTag.java ResetTag.java ButtonTag.java FormTag.java RadioTag.java HtmlTag.java BaseTag.java MessagesTag.java OptionTag.java ImageTag.java BaseHandlerTag.java ErrorsTag.java JavascriptValidatorTag.java BaseFieldTag.java MultiboxTag.java

dgraham     2002/11/11 19:47:42

  Modified:    src/share/org/apache/struts/taglib/html CancelTag.java
                        SubmitTag.java CheckboxTag.java ResetTag.java
                        ButtonTag.java FormTag.java RadioTag.java
                        HtmlTag.java BaseTag.java MessagesTag.java
                        OptionTag.java ImageTag.java BaseHandlerTag.java
                        ErrorsTag.java JavascriptValidatorTag.java
                        BaseFieldTag.java MultiboxTag.java
  Log:
  Added xhtml support with 2 simple helper methods added to BaseHandlerTag.
  The html taglib now outputs xhtml when nested inside an <html:html xhtml="true">
  tag.
  
  Revision  Changes    Path
  1.9       +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/CancelTag.java
  
  Index: CancelTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/CancelTag.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- CancelTag.java	26 Oct 2002 15:08:16 -0000	1.8
  +++ CancelTag.java	12 Nov 2002 03:47:42 -0000	1.9
  @@ -210,7 +210,7 @@
           results.append("\"");
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Render this element to our writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.15      +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/SubmitTag.java
  
  Index: SubmitTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/SubmitTag.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SubmitTag.java	26 Oct 2002 15:08:16 -0000	1.14
  +++ SubmitTag.java	12 Nov 2002 03:47:42 -0000	1.15
  @@ -230,7 +230,7 @@
           results.append("\"");
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Render this element to our writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.16      +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/CheckboxTag.java
  
  Index: CheckboxTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/CheckboxTag.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- CheckboxTag.java	26 Oct 2002 15:08:16 -0000	1.15
  +++ CheckboxTag.java	12 Nov 2002 03:47:42 -0000	1.16
  @@ -218,7 +218,7 @@
               results.append(" checked=\"checked\"");
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Print this field to our output writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.10      +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/ResetTag.java
  
  Index: ResetTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/ResetTag.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ResetTag.java	26 Oct 2002 15:08:16 -0000	1.9
  +++ ResetTag.java	12 Nov 2002 03:47:42 -0000	1.10
  @@ -225,7 +225,7 @@
   	results.append("\"");
   	results.append(prepareEventHandlers());
   	results.append(prepareStyles());
  -	results.append(">");
  +	results.append(getElementClose(this));
   
   	// Render this element to our writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.13      +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/ButtonTag.java
  
  Index: ButtonTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/ButtonTag.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ButtonTag.java	26 Oct 2002 15:08:16 -0000	1.12
  +++ ButtonTag.java	12 Nov 2002 03:47:42 -0000	1.13
  @@ -207,7 +207,7 @@
           results.append("\"");
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Render this element to our writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.32      +11 -11    jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java
  
  Index: FormTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- FormTag.java	8 Nov 2002 05:39:24 -0000	1.31
  +++ FormTag.java	12 Nov 2002 03:47:42 -0000	1.32
  @@ -596,7 +596,7 @@
           HttpSession session = pageContext.getSession();
           if (session != null) {
               String token =
  -                (String) session.getAttribute(Action.TRANSACTION_TOKEN_KEY);
  +                (String) session.getAttribute(Globals.TRANSACTION_TOKEN_KEY);
               if (token != null) {
                   results.append("<input type=\"hidden\" name=\"");
                   results.append(Constants.TOKEN_KEY);
  @@ -801,7 +801,7 @@
   
           // Use our servlet mapping, if one is specified
           String servletMapping = (String)
  -            pageContext.getAttribute(Action.SERVLET_KEY,
  +            pageContext.getAttribute(Globals.SERVLET_KEY,
                                        PageContext.APPLICATION_SCOPE);
           if (servletMapping != null) {
               String queryString = null;
  @@ -854,12 +854,12 @@
           if (moduleConfig == null) {
               JspException e = new JspException
                   (messages.getMessage("formTag.collections"));
  -            pageContext.setAttribute(Action.EXCEPTION_KEY, e,
  +            pageContext.setAttribute(Globals.EXCEPTION_KEY, e,
                                        PageContext.REQUEST_SCOPE);
               throw e;
           }
           servlet = (ActionServlet)
  -            pageContext.getServletContext().getAttribute(Action.ACTION_SERVLET_KEY);
  +            pageContext.getServletContext().getAttribute(Globals.ACTION_SERVLET_KEY);
   
           // Look up the action mapping we will be submitting to
           String mappingName = getActionMappingName();
  @@ -867,7 +867,7 @@
           if (mapping == null) {
               JspException e = new JspException
                   (messages.getMessage("formTag.mapping", mappingName));
  -            pageContext.setAttribute(Action.EXCEPTION_KEY, e,
  +            pageContext.setAttribute(Globals.EXCEPTION_KEY, e,
                                        PageContext.REQUEST_SCOPE);
               throw e;
           }
  @@ -877,7 +877,7 @@
               if (type == null) {
                   JspException e = new JspException
                       (messages.getMessage("formTag.nameType"));
  -                pageContext.setAttribute(Action.EXCEPTION_KEY, e,
  +                pageContext.setAttribute(Globals.EXCEPTION_KEY, e,
                                            PageContext.REQUEST_SCOPE);
                   throw e;
               }
  @@ -893,7 +893,7 @@
           if (formBeanConfig == null) {
               JspException e = new JspException
                   (messages.getMessage("formTag.formBean", mapping.getName()));
  -            pageContext.setAttribute(Action.EXCEPTION_KEY, e,
  +            pageContext.setAttribute(Globals.EXCEPTION_KEY, e,
                                        PageContext.REQUEST_SCOPE);
               throw e;
           }
  
  
  
  1.17      +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/RadioTag.java
  
  Index: RadioTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/RadioTag.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- RadioTag.java	26 Oct 2002 15:08:16 -0000	1.16
  +++ RadioTag.java	12 Nov 2002 03:47:42 -0000	1.17
  @@ -284,7 +284,7 @@
               results.append(" checked=\"checked\"");
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Print this field to our output writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.6       +9 -6      jakarta-struts/src/share/org/apache/struts/taglib/html/HtmlTag.java
  
  Index: HtmlTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/HtmlTag.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HtmlTag.java	7 Nov 2002 01:43:34 -0000	1.5
  +++ HtmlTag.java	12 Nov 2002 03:47:42 -0000	1.6
  @@ -62,10 +62,13 @@
   package org.apache.struts.taglib.html;
   
   import java.util.Locale;
  +
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpSession;
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.tagext.TagSupport;
  +
  +import org.apache.struts.Globals;
   import org.apache.struts.action.Action;
   import org.apache.struts.util.MessageResources;
   import org.apache.struts.util.ResponseUtils;
  @@ -204,7 +207,7 @@
               return (null);
   
           // Return any currently set Locale in our session
  -        Locale current = (Locale) session.getAttribute(Action.LOCALE_KEY);
  +        Locale current = (Locale) session.getAttribute(Globals.LOCALE_KEY);
           if (current != null)
               return (current);
   
  @@ -213,7 +216,7 @@
               return (null);
           current = pageContext.getRequest().getLocale();
           if (current != null)
  -            session.setAttribute(Action.LOCALE_KEY, current);
  +            session.setAttribute(Globals.LOCALE_KEY, current);
           return (current);
   
       }
  
  
  
  1.9       +53 -51    jakarta-struts/src/share/org/apache/struts/taglib/html/BaseTag.java
  
  Index: BaseTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/BaseTag.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BaseTag.java	26 Oct 2002 15:08:16 -0000	1.8
  +++ BaseTag.java	12 Nov 2002 03:47:42 -0000	1.9
  @@ -62,14 +62,15 @@
   package org.apache.struts.taglib.html;
   
   import java.io.IOException;
  +
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.JspWriter;
   import javax.servlet.jsp.PageContext;
   import javax.servlet.jsp.tagext.TagSupport;
  -import org.apache.struts.action.Action;
  -import org.apache.struts.util.MessageResources;
   
  +import org.apache.struts.Globals;
  +import org.apache.struts.util.MessageResources;
   
   /**
    * Renders an HTML <base> element with an href 
  @@ -84,12 +85,12 @@
    */
   
   public class BaseTag extends TagSupport {
  -  
  -  /**
  -   * The message resources for this package.
  -   */
  -  protected static MessageResources messages =
  -     MessageResources.getMessageResources(Constants.Package + ".LocalStrings");
  +
  +    /**
  +     * The message resources for this package.
  +     */
  +    protected static MessageResources messages =
  +        MessageResources.getMessageResources(Constants.Package + ".LocalStrings");
   
       /**
        * The target window for this base reference.
  @@ -104,45 +105,46 @@
           this.target = target;
       }
   
  -
  -  /**
  -   * Process the start of this tag.
  -   *
  -   * @exception JspException if a JSP exception has occurred
  -   */
  -  public int doStartTag() throws JspException {
  -    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
  -    StringBuffer buf = new StringBuffer("<base href=\""); 
  -    buf.append(request.getScheme());
  -    buf.append("://");
  -    buf.append(request.getServerName());
  -    if ("http".equals(request.getScheme()) &&
  -        (80 == request.getServerPort())) {
  -        ;
  -    } else if ("https".equals(request.getScheme()) &&
  -               (443 == request.getServerPort())) {
  -        ;
  -    } else {
  -        buf.append(":");
  -        buf.append(request.getServerPort());
  -    }
  -    buf.append(request.getRequestURI());
  -    buf.append("\"");
  -    if (target != null) {
  -        buf.append(" target=\"");
  -        buf.append(target);
  +    /**
  +     * Process the start of this tag.
  +     *
  +     * @exception JspException if a JSP exception has occurred
  +     */
  +    public int doStartTag() throws JspException {
  +        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
  +        StringBuffer buf = new StringBuffer("<base href=\"");
  +        buf.append(request.getScheme());
  +        buf.append("://");
  +        buf.append(request.getServerName());
  +        if ("http".equals(request.getScheme()) && (80 == request.getServerPort())) {
  +            ;
  +        } else if ("https".equals(request.getScheme()) && (443 == request.getServerPort())) {
  +            ;
  +        } else {
  +            buf.append(":");
  +            buf.append(request.getServerPort());
  +        }
  +        buf.append(request.getRequestURI());
           buf.append("\"");
  +        if (target != null) {
  +            buf.append(" target=\"");
  +            buf.append(target);
  +            buf.append("\"");
  +        }
  +
  +        if (BaseHandlerTag.isXhtml(this)) {
  +            buf.append("/>");
  +        } else {
  +            buf.append(">");
  +        }
  +
  +        JspWriter out = pageContext.getOut();
  +        try {
  +            out.write(buf.toString());
  +        } catch (IOException e) {
  +            pageContext.setAttribute(Globals.EXCEPTION_KEY, e, PageContext.REQUEST_SCOPE);
  +            throw new JspException(messages.getMessage("common.io", e.toString()));
  +        }
  +        return EVAL_BODY_INCLUDE;
       }
  -    buf.append(">");
  -    JspWriter out = pageContext.getOut();
  -    try {
  -        out.write(buf.toString());
  -    }
  -    catch (IOException e) {
  -        pageContext.setAttribute(Action.EXCEPTION_KEY, e,
  -                                 PageContext.REQUEST_SCOPE);
  -        throw new JspException(messages.getMessage("common.io", e.toString()));
  -    }
  -    return EVAL_BODY_INCLUDE;
  -  }
   }
  
  
  
  1.6       +17 -14    jakarta-struts/src/share/org/apache/struts/taglib/html/MessagesTag.java
  
  Index: MessagesTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/MessagesTag.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MessagesTag.java	23 Sep 2002 05:13:43 -0000	1.5
  +++ MessagesTag.java	12 Nov 2002 03:47:42 -0000	1.6
  @@ -62,8 +62,11 @@
   package org.apache.struts.taglib.html;
   
   import java.util.Iterator;
  +
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.tagext.BodyTagSupport;
  +
  +import org.apache.struts.Globals;
   import org.apache.struts.action.Action;
   import org.apache.struts.action.ActionMessage;
   import org.apache.struts.action.ActionMessages;
  @@ -74,9 +77,9 @@
   
   /**
    * Custom tag that iterates the elements of a message collection.
  - * It defaults to retrieving the messages from <code>Action.ERROR_KEY</code>,
  + * It defaults to retrieving the messages from <code>Globals.ERROR_KEY</code>,
    * but if the message attribute is set to true then the messages will be
  - * retrieved from <code>Action.MESSAGE_KEY</code>. This is an alternative
  + * retrieved from <code>Globals.MESSAGE_KEY</code>. This is an alternative
    * to the default <code>ErrorsTag</code>.
    *
    * @author David Winterfeldt
  @@ -110,17 +113,17 @@
       /**
        * The servlet context attribute key for our resources.
       */
  -    protected String bundle = Action.MESSAGES_KEY;
  +    protected String bundle = Globals.MESSAGES_KEY;
   
       /**
        * The session attribute key for our locale.
       */
  -    protected String locale = Action.LOCALE_KEY;
  +    protected String locale = Globals.LOCALE_KEY;
   
       /**
        * The request attribute key for our error messages (if any).
        */
  -    protected String name = Action.ERROR_KEY;
  +    protected String name = Globals.ERROR_KEY;
   
       /**
        * The name of the property for which error messages should be returned,
  @@ -139,7 +142,7 @@
       protected String footer = null;
   
       /**
  -     * If this is set to 'true', then the <code>Action.MESSAGE_KEY</code> will
  +     * If this is set to 'true', then the <code>Globals.MESSAGE_KEY</code> will
        * be used to retrieve the messages from scope.
       */
       protected String message = null;
  @@ -223,7 +226,7 @@
           ActionMessages messages = null;
   
           if (message != null && "true".equalsIgnoreCase(message))
  -           name = Action.MESSAGE_KEY;
  +           name = Globals.MESSAGE_KEY;
   
           try {
               messages = RequestUtils.getActionMessages(pageContext, name);
  @@ -325,9 +328,9 @@
          iterator = null;
          processed = false;
          id = null;
  -       bundle = Action.MESSAGES_KEY;
  -       locale = Action.LOCALE_KEY;
  -       name = Action.ERROR_KEY;
  +       bundle = Globals.MESSAGES_KEY;
  +       locale = Globals.LOCALE_KEY;
  +       name = Globals.ERROR_KEY;
          property = null;
          header = null;
          footer = null;
  
  
  
  1.13      +15 -14    jakarta-struts/src/share/org/apache/struts/taglib/html/OptionTag.java
  
  Index: OptionTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/OptionTag.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- OptionTag.java	9 Oct 2002 05:09:35 -0000	1.12
  +++ OptionTag.java	12 Nov 2002 03:47:42 -0000	1.13
  @@ -64,8 +64,11 @@
   
   
   import java.util.Locale;
  +
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.tagext.BodyTagSupport;
  +
  +import org.apache.struts.Globals;
   import org.apache.struts.action.Action;
   import org.apache.struts.util.MessageResources;
   import org.apache.struts.util.RequestUtils;
  @@ -113,7 +116,7 @@
        * The name of the servlet context attribute containing our message
        * resources.
        */
  -    protected String bundle = Action.MESSAGES_KEY;
  +    protected String bundle = Globals.MESSAGES_KEY;
   
       public String getBundle() {
           return (this.bundle);
  @@ -157,7 +160,7 @@
        * The name of the attribute containing the Locale to be used for
        * looking up internationalized messages.
        */
  -    protected String locale = Action.LOCALE_KEY;
  +    protected String locale = Globals.LOCALE_KEY;
   
       public String getLocale() {
           return (this.locale);
  @@ -337,17 +340,15 @@
        * Release any acquired resources.
        */
       public void release() {
  -
  -	super.release();
  -        bundle = Action.MESSAGES_KEY;
  +        super.release();
  +        bundle = Globals.MESSAGES_KEY;
           disabled = false;
           key = null;
  -        locale = Action.LOCALE_KEY;
  -	style = null;
  -	styleClass = null;
  +        locale = Globals.LOCALE_KEY;
  +        style = null;
  +        styleClass = null;
           text = null;
  -	value = null;
  -
  +        value = null;
       }
   
   
  
  
  
  1.24      +5 -5      jakarta-struts/src/share/org/apache/struts/taglib/html/ImageTag.java
  
  Index: ImageTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/ImageTag.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ImageTag.java	8 Nov 2002 05:39:24 -0000	1.23
  +++ ImageTag.java	12 Nov 2002 03:47:42 -0000	1.24
  @@ -261,7 +261,7 @@
           }
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Render this element to our writer
           ResponseUtils.write(pageContext, results.toString());
  
  
  
  1.18      +74 -53    jakarta-struts/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java
  
  Index: BaseHandlerTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- BaseHandlerTag.java	23 Sep 2002 05:13:43 -0000	1.17
  +++ BaseHandlerTag.java	12 Nov 2002 03:47:42 -0000	1.18
  @@ -62,12 +62,15 @@
   package org.apache.struts.taglib.html;
   
   import java.util.Locale;
  +
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.tagext.BodyTagSupport;
  -import org.apache.struts.action.Action;
  +import javax.servlet.jsp.tagext.Tag;
  +
  +import org.apache.struts.Globals;
  +import org.apache.struts.taglib.logic.IterateTag;
   import org.apache.struts.util.MessageResources;
   import org.apache.struts.util.RequestUtils;
  -import org.apache.struts.taglib.logic.IterateTag;
   
   /**
    * Base class for tags that render form elements capable of including JavaScript
  @@ -81,39 +84,35 @@
   
   public abstract class BaseHandlerTag extends BodyTagSupport {
   
  -
       // ----------------------------------------------------- Instance Variables
   
  -
       /**
        * The default Locale for our server.
        */
       protected static final Locale defaultLocale = Locale.getDefault();
   
  -
       /**
        * The message resources for this package.
        */
       protected static MessageResources messages =
  -     MessageResources.getMessageResources(Constants.Package + ".LocalStrings");
  -
  +        MessageResources.getMessageResources(Constants.Package + ".LocalStrings");
   
  -//  Navigation Management
  +    //  Navigation Management
   
       /** Access key character. */
  -    protected String accesskey= null;
  +    protected String accesskey = null;
   
       /** Tab index value. */
       protected String tabindex = null;
   
  -//  Indexing ability for Iterate
  +    //  Indexing ability for Iterate
   
       /** Whether to created indexed names for fields
         * @since Struts 1.1
         */
       protected boolean indexed = false;
   
  -//  Mouse Events
  +    //  Mouse Events
   
       /** Mouse click event. */
       private String onclick = null;
  @@ -136,7 +135,7 @@
       /** Mouse released on component event. */
       private String onmouseup = null;
   
  -//  Keyboard Events
  +    //  Keyboard Events
   
       /** Key down in component event. */
       private String onkeydown = null;
  @@ -147,7 +146,7 @@
       /** Key down and up together in component event. */
       private String onkeypress = null;
   
  -// Text Events
  +    // Text Events
   
       /** Text selected in component event. */
       private String onselect = null;
  @@ -155,7 +154,7 @@
       /** Content changed after component lost focus event. */
       private String onchange = null;
   
  -// Focus Events and States
  +    // Focus Events and States
   
       /** Component lost focus event. */
       private String onblur = null;
  @@ -169,7 +168,7 @@
       /** Component is readonly. */
       private boolean readonly = false;
   
  -// CSS Style Support
  +    // CSS Style Support
   
       /** Style attribute associated with component. */
       private String style = null;
  @@ -180,7 +179,7 @@
       /** Identifier associated with component.  */
       private String styleId = null;
   
  -// Other Common Attributes
  +    // Other Common Attributes
   
       /** The alternate text of this element. */
       private String alt = null;
  @@ -192,7 +191,7 @@
       private String bundle = null;
   
       /** The name of the session attribute key for our locale. */
  -    private String locale = Action.LOCALE_KEY;
  +    private String locale = Globals.LOCALE_KEY;
   
       /** The advisory title of this element. */
       private String title = null;
  @@ -200,10 +199,9 @@
       /** The message resources key of the advisory title. */
       private String titleKey = null;
   
  -
       // ------------------------------------------------------------- Properties
   
  -//  Navigation Management
  +    //  Navigation Management
   
       /** Sets the accessKey character. */
       public void setAccesskey(String accessKey) {
  @@ -215,7 +213,6 @@
           return (this.accesskey);
       }
   
  -
       /** Sets the tabIndex value. */
       public void setTabindex(String tabIndex) {
           this.tabindex = tabIndex;
  @@ -226,7 +223,7 @@
           return (this.tabindex);
       }
   
  -//  Indexing ability for Iterate [since Struts 1.1]
  +    //  Indexing ability for Iterate [since Struts 1.1]
   
       /** Sets the indexed value.
         * @since Struts 1.1
  @@ -242,7 +239,7 @@
           return (this.indexed);
       }
   
  -// Mouse Events
  +    // Mouse Events
   
       /** Sets the onClick event handler. */
       public void setOnclick(String onClick) {
  @@ -314,7 +311,7 @@
           return onmouseout;
       }
   
  -// Keyboard Events
  +    // Keyboard Events
   
       /** Sets the onKeyDown event handler. */
       public void setOnkeydown(String onKeyDown) {
  @@ -346,7 +343,7 @@
           return onkeypress;
       }
   
  -// Text Events
  +    // Text Events
   
       /** Sets the onChange event handler. */
       public void setOnchange(String onChange) {
  @@ -368,7 +365,7 @@
           return onselect;
       }
   
  -// Focus Events and States
  +    // Focus Events and States
   
       /** Sets the onBlur event handler. */
       public void setOnblur(String onBlur) {
  @@ -410,7 +407,7 @@
           return readonly;
       }
   
  -// CSS Style Support
  +    // CSS Style Support
   
       /** Sets the style attribute. */
       public void setStyle(String style) {
  @@ -442,7 +439,7 @@
           return styleId;
       }
   
  -// Other Common Elements
  +    // Other Common Elements
   
       /** Returns the alternate text attribute. */
       public String getAlt() {
  @@ -504,10 +501,8 @@
           this.titleKey = titleKey;
       }
   
  -
       // --------------------------------------------------------- Public Methods
   
  -
       /**
        * Release any acquired resources.
        */
  @@ -519,7 +514,7 @@
           altKey = null;
           bundle = null;
           indexed = false;
  -        locale = Action.LOCALE_KEY;
  +        locale = Globals.LOCALE_KEY;
           onclick = null;
           ondblclick = null;
           onmouseover = null;
  @@ -545,10 +540,8 @@
   
       }
   
  -
       // ------------------------------------------------------ Protected Methods
   
  -
       /**
        * Return the text specified by the literal value or the message resources
        * key, if any; otherwise return <code>null</code>.
  @@ -562,8 +555,7 @@
   
           if (literal != null) {
               if (key != null) {
  -                JspException e = new JspException
  -                    (messages.getMessage("common.both"));
  +                JspException e = new JspException(messages.getMessage("common.both"));
                   RequestUtils.saveException(pageContext, e);
                   throw e;
               } else {
  @@ -571,8 +563,7 @@
               }
           } else {
               if (key != null) {
  -                return (RequestUtils.message(pageContext, getBundle(),
  -                                             getLocale(), key));
  +                return (RequestUtils.message(pageContext, getBundle(), getLocale(), key));
               } else {
                   return null;
               }
  @@ -580,30 +571,28 @@
   
       }
   
  -
       /**
        *  Appends bean name with index in brackets for tags with
        *  'true' value in 'indexed' attribute.
        *  @param handlers The StringBuffer that output will be appended to.
        *  @exception JspException if 'indexed' tag used outside of iterate tag.
        */
  -    protected void prepareIndex( StringBuffer handlers, String name )
  -        throws JspException {
  +    protected void prepareIndex(StringBuffer handlers, String name) throws JspException {
           // look for outer iterate tag
           IterateTag iterateTag = (IterateTag) findAncestorWithClass(this, IterateTag.class);
           if (iterateTag == null) {
  -             // this tag should only be nested in iteratetag, if it's not, throw exception
  -             JspException e = new JspException(messages.getMessage("indexed.noEnclosingIterate"));
  -             RequestUtils.saveException(pageContext, e);
  -             throw e;
  +            // this tag should only be nested in iteratetag, if it's not, throw exception
  +            JspException e = new JspException(messages.getMessage("indexed.noEnclosingIterate"));
  +            RequestUtils.saveException(pageContext, e);
  +            throw e;
           }
  -        if( name!=null )
  -                handlers.append( name );
  +        if (name != null)
  +            handlers.append(name);
           handlers.append("[");
           handlers.append(iterateTag.getIndex());
  -                handlers.append("]");
  -        if( name!=null )
  -                handlers.append(".");
  +        handlers.append("]");
  +        if (name != null)
  +            handlers.append(".");
       }
   
       /**
  @@ -657,7 +646,6 @@
           return handlers.toString();
       }
   
  -
       /**
        * Prepares the mouse event handlers, appending them to the the given
        * StringBuffer.
  @@ -782,5 +770,38 @@
   
       }
   
  +    /**
  +     * Allows HTML tags to find out if they're nested within an %lt;html:html&gt; tag that
  +     * has xhtml set to true.
  +     * @param tag - Tags should pass themselves into the method as a starting point
  +     * for finding the parent html tag.
  +     * @return true if the tag is nested within an html tag with xhtml set to true, false
  +     * otherwise.
  +     * @since Struts 1.1
  +     */
  +    protected static boolean isXhtml(Tag tag) {
  +        HtmlTag htmlTag = (HtmlTag) findAncestorWithClass(tag, HtmlTag.class);
  +        if (htmlTag == null) {
  +            return false;
  +        }
  +
  +        return htmlTag.getXhtml();
  +    }
  +
  +    /**
  +     * Returns the closing brace for an input element depending on xhtml status.  The tag
  +     * must be nested within an %lt;html:html&gt; tag that has xhtml set to true.
  +     * @param tag - Tags should pass themselves into the method as a starting point
  +     * for finding the parent html tag.
  +     * @return String - &gt; if xhtml is false, /&gt; if xhtml is true
  +     * @since Struts 1.1
  +     */
  +    protected String getElementClose(Tag tag) {
  +        if (this.isXhtml(tag)) {
  +            return "/>";
  +        } else {
  +            return ">";
  +        }
  +    }
   
   }
  
  
  
  1.18      +14 -15    jakarta-struts/src/share/org/apache/struts/taglib/html/ErrorsTag.java
  
  Index: ErrorsTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/ErrorsTag.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ErrorsTag.java	23 Sep 2002 05:13:43 -0000	1.17
  +++ ErrorsTag.java	12 Nov 2002 03:47:42 -0000	1.18
  @@ -65,8 +65,11 @@
   
   import java.util.Iterator;
   import java.util.Locale;
  +
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.tagext.TagSupport;
  +
  +import org.apache.struts.Globals;
   import org.apache.struts.action.Action;
   import org.apache.struts.action.ActionError;
   import org.apache.struts.action.ActionErrors;
  @@ -128,7 +131,7 @@
       /**
        * The session attribute key for our locale.
        */
  -    protected String locale = Action.LOCALE_KEY;
  +    protected String locale = Globals.LOCALE_KEY;
   
       public String getLocale() {
           return (this.locale);
  @@ -149,7 +152,7 @@
       /**
        * The request attribute key for our error messages (if any).
        */
  -    protected String name = Action.ERROR_KEY;
  +    protected String name = Globals.ERROR_KEY;
   
       public String getName() {
       return (this.name);
  @@ -194,7 +197,7 @@
               RequestUtils.saveException(pageContext, e);
               throw e;
           }
  -        if ((errors == null) || errors.empty()) {
  +        if ((errors == null) || errors.isEmpty()) {
           return (EVAL_BODY_INCLUDE);
           }
   
  @@ -262,19 +265,15 @@
   
       }
   
  -
       /**
        * Release any acquired resources.
        */
       public void release() {
  -
  -    super.release();
  -        bundle = Action.MESSAGES_KEY;
  -        locale = Action.LOCALE_KEY;
  -    name = Action.ERROR_KEY;
  +        super.release();
  +        bundle = Globals.MESSAGES_KEY;
  +        locale = Globals.LOCALE_KEY;
  +        name = Globals.ERROR_KEY;
           property = null;
  -
       }
  -
   
   }
  
  
  
  1.14      +109 -54   jakarta-struts/src/share/org/apache/struts/taglib/html/JavascriptValidatorTag.java
  
  Index: JavascriptValidatorTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/JavascriptValidatorTag.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- JavascriptValidatorTag.java	8 Nov 2002 05:45:58 -0000	1.13
  +++ JavascriptValidatorTag.java	12 Nov 2002 03:47:42 -0000	1.14
  @@ -52,10 +52,8 @@
    * <http://www.apache.org/>.
    */
   
  -
   package org.apache.struts.taglib.html;
   
  -
   import java.io.IOException;
   import java.util.ArrayList;
   import java.util.Collections;
  @@ -64,6 +62,7 @@
   import java.util.List;
   import java.util.Locale;
   import java.util.Map;
  +
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.JspWriter;
   import javax.servlet.jsp.PageContext;
  @@ -75,13 +74,13 @@
   import org.apache.commons.validator.ValidatorResources;
   import org.apache.commons.validator.ValidatorUtil;
   import org.apache.commons.validator.Var;
  +import org.apache.struts.Globals;
   import org.apache.struts.action.Action;
  -import org.apache.struts.validator.ValidatorPlugIn;
  +import org.apache.struts.config.ModuleConfig;
   import org.apache.struts.util.MessageResources;
  -import org.apache.struts.validator.Resources;
   import org.apache.struts.util.RequestUtils;
  -import org.apache.struts.config.ModuleConfig;
  -
  +import org.apache.struts.validator.Resources;
  +import org.apache.struts.validator.ValidatorPlugIn;
   
   /**
    * Custom tag that generates JavaScript for client side validation based
  @@ -94,15 +93,12 @@
    */
   public class JavascriptValidatorTag extends BodyTagSupport {
   
  -
       // ----------------------------------------------------------- Properties
   
  -
       /**
        * The servlet context attribute key for our resources.
        */
  -    protected String bundle = Action.MESSAGES_KEY;
  -
  +    protected String bundle = Globals.MESSAGES_KEY;
   
       /**
        * The default locale on our server.
  @@ -254,18 +250,18 @@
         * JavaScript with html comments.  If this is set to 'true', which
         * is the default, the htmlComment will be surround the JavaScript.
         */
  -     public String getHtmlComment() {
  -         return htmlComment;
  -     }
  +    public String getHtmlComment() {
  +        return htmlComment;
  +    }
   
  -     /**
  -      * Sets whether or not to delimit the
  -      * JavaScript with html comments.  If this is set to 'true', which
  -      * is the default, the htmlComment will be surround the JavaScript.
  -      */
  -     public void setHtmlComment(String htmlComment) {
  -         this.htmlComment = htmlComment;
  -     }
  +    /**
  +     * Sets whether or not to delimit the
  +     * JavaScript with html comments.  If this is set to 'true', which
  +     * is the default, the htmlComment will be surround the JavaScript.
  +     */
  +    public void setHtmlComment(String htmlComment) {
  +        this.htmlComment = htmlComment;
  +    }
   
       /**
        * Gets the src attribute's value when defining
  @@ -293,13 +289,15 @@
           StringBuffer results = new StringBuffer();
   
           ModuleConfig config = RequestUtils.getModuleConfig(pageContext);
  -        ValidatorResources resources = (ValidatorResources)
  -                pageContext.getAttribute(ValidatorPlugIn.VALIDATOR_KEY +
  -                config.getPrefix(), PageContext.APPLICATION_SCOPE);
  +        ValidatorResources resources =
  +            (ValidatorResources) pageContext.getAttribute(
  +                ValidatorPlugIn.VALIDATOR_KEY + config.getPrefix(),
  +                PageContext.APPLICATION_SCOPE);
           Locale locale = null;
           try {
  -            locale = (Locale) pageContext.getAttribute(Action.LOCALE_KEY, PageContext.SESSION_SCOPE);
  -        } catch (IllegalStateException e) {  // Invalidated session
  +            locale =
  +                (Locale) pageContext.getAttribute(Globals.LOCALE_KEY, PageContext.SESSION_SCOPE);
  +        } catch (IllegalStateException e) { // Invalidated session
               locale = null;
           }
   
  @@ -311,9 +309,10 @@
           form = resources.get(locale, formName);
           if (form != null) {
               if ("true".equals(dynamicJavascript)) {
  -                MessageResources messages = (MessageResources)
  -                        pageContext.getAttribute(bundle + config.getPrefix(),
  -                                                 PageContext.APPLICATION_SCOPE);
  +                MessageResources messages =
  +                    (MessageResources) pageContext.getAttribute(
  +                        bundle + config.getPrefix(),
  +                        PageContext.APPLICATION_SCOPE);
   
                   List lActions = new ArrayList();
                   List lActionMethods = new ArrayList();
  @@ -349,14 +348,16 @@
                           ValidatorAction va1 = (ValidatorAction) o1;
                           ValidatorAction va2 = (ValidatorAction) o2;
   
  -                        if ((va1.getDepends() == null || va1.getDepends().length() == 0) &&
  -                                (va2.getDepends() == null || va2.getDepends().length() == 0)) {
  +                        if ((va1.getDepends() == null || va1.getDepends().length() == 0)
  +                            && (va2.getDepends() == null || va2.getDepends().length() == 0)) {
                               return 0;
  -                        } else if ((va1.getDepends() != null && va1.getDepends().length() > 0) &&
  -                                (va2.getDepends() == null || va2.getDepends().length() == 0)) {
  +                        } else if (
  +                            (va1.getDepends() != null && va1.getDepends().length() > 0)
  +                                && (va2.getDepends() == null || va2.getDepends().length() == 0)) {
                               return 1;
  -                        } else if ((va1.getDepends() == null || va1.getDepends().length() == 0) &&
  -                                (va2.getDepends() != null && va2.getDepends().length() > 0)) {
  +                        } else if (
  +                            (va1.getDepends() == null || va1.getDepends().length() == 0)
  +                                && (va2.getDepends() != null && va2.getDepends().length() > 0)) {
                               return -1;
                           } else {
                               return va1.getDependencies().size() - va2.getDependencies().size();
  @@ -394,13 +395,22 @@
   
                           // Skip indexed fields for now until there is
                           // a good way to handle error messages (and the length of the list (could retrieve from scope?))
  -                        if (!field.isIndexed() && field.getPage() == page && field.isDependency(va.getName())) {
  +                        if (!field.isIndexed()
  +                            && field.getPage() == page
  +                            && field.isDependency(va.getName())) {
                               String message = Resources.getMessage(messages, locale, va, field);
                               message = (message != null ? message : "");
   
                               jscriptVar = getNextVar(jscriptVar);
   
  -                            results.append("     this." + jscriptVar + " = new Array(\"" + field.getKey() + "\", \"" + message + "\", ");
  +                            results.append(
  +                                "     this."
  +                                    + jscriptVar
  +                                    + " = new Array(\""
  +                                    + field.getKey()
  +                                    + "\", \""
  +                                    + message
  +                                    + "\", ");
   
                               results.append("new Function (\"varName\", \"");
   
  @@ -413,16 +423,41 @@
                                   String jsType = var.getJsType();
   
                                   if (Var.JSTYPE_INT.equalsIgnoreCase(jsType)) {
  -                                    results.append("this." + varKey + "=" + ValidatorUtil.replace(varValue, "\\", "\\\\") + "; ");
  +                                    results.append(
  +                                        "this."
  +                                            + varKey
  +                                            + "="
  +                                            + ValidatorUtil.replace(varValue, "\\", "\\\\")
  +                                            + "; ");
                                   } else if (Var.JSTYPE_REGEXP.equalsIgnoreCase(jsType)) {
  -                                    results.append("this." + varKey + "=/" + ValidatorUtil.replace(varValue, "\\", "\\\\") + "/; ");
  +                                    results.append(
  +                                        "this."
  +                                            + varKey
  +                                            + "=/"
  +                                            + ValidatorUtil.replace(varValue, "\\", "\\\\")
  +                                            + "/; ");
                                   } else if (Var.JSTYPE_STRING.equalsIgnoreCase(jsType)) {
  -                                    results.append("this." + varKey + "='" + ValidatorUtil.replace(varValue, "\\", "\\\\") + "'; ");
  +                                    results.append(
  +                                        "this."
  +                                            + varKey
  +                                            + "='"
  +                                            + ValidatorUtil.replace(varValue, "\\", "\\\\")
  +                                            + "'; ");
                                       // So everyone using the latest format doesn't need to change their xml files immediately.
                                   } else if ("mask".equalsIgnoreCase(varKey)) {
  -                                    results.append("this." + varKey + "=/" + ValidatorUtil.replace(varValue, "\\", "\\\\") + "/; ");
  +                                    results.append(
  +                                        "this."
  +                                            + varKey
  +                                            + "=/"
  +                                            + ValidatorUtil.replace(varValue, "\\", "\\\\")
  +                                            + "/; ");
                                   } else {
  -                                    results.append("this." + varKey + "='" + ValidatorUtil.replace(varValue, "\\", "\\\\") + "'; ");
  +                                    results.append(
  +                                        "this."
  +                                            + varKey
  +                                            + "='"
  +                                            + ValidatorUtil.replace(varValue, "\\", "\\\\")
  +                                            + "'; ");
                                   }
                               }
   
  @@ -432,16 +467,17 @@
                       results.append("    } \n\n");
                   }
               } else if ("true".equals(staticJavascript)) {
  -                results.append("<script language=\"Javascript1.1\" type=\"text/javascript\">");
  +                results.append(this.getStartElement());
                   if ("true".equals(htmlComment))
  -                  results.append(htmlBeginComment);
  +                    results.append(htmlBeginComment);
               }
           }
           if ("true".equals(staticJavascript)) {
               results.append(getJavascriptStaticMethods(resources));
           }
   
  -        if (form != null && ("true".equals(dynamicJavascript) || "true".equals(staticJavascript))) {
  +        if (form != null
  +            && ("true".equals(dynamicJavascript) || "true".equals(staticJavascript))) {
               results.append(getJavascriptEnd());
           }
   
  @@ -464,7 +500,7 @@
        */
       public void release() {
           super.release();
  -        bundle = Action.MESSAGES_KEY;
  +        bundle = Globals.MESSAGES_KEY;
           formName = null;
           page = 0;
           methodName = null;
  @@ -474,12 +510,12 @@
           src = null;
       }
   
  -
       protected String getJavascriptBegin(String methods) {
           StringBuffer sb = new StringBuffer();
  -        String name = formName.substring(0, 1).toUpperCase() + formName.substring(1, formName.length());
  +        String name =
  +            formName.substring(0, 1).toUpperCase() + formName.substring(1, formName.length());
   
  -        sb.append("<script language=\"Javascript1.1\" type=\"text/javascript\"");
  +        sb.append(this.getStartElement());
   
           if (src != null) {
               sb.append(" src=\"" + src + "\"> \n");
  @@ -488,13 +524,19 @@
           }
   
           if ("true".equals(htmlComment))
  -           sb.append(htmlBeginComment);
  +            sb.append(htmlBeginComment);
           sb.append("\n     var bCancel = false; \n\n");
   
           if (methodName == null || methodName.length() == 0)
  -            sb.append("    function validate" + name + "(form) {                                                                   \n");
  +            sb.append(
  +                "    function validate"
  +                    + name
  +                    + "(form) {                                                                   \n");
           else
  -            sb.append("    function " + methodName + "(form) {                                                                   \n");
  +            sb.append(
  +                "    function "
  +                    + methodName
  +                    + "(form) {                                                                   \n");
   
           sb.append("        if (bCancel) \n");
           sb.append("      return true; \n");
  @@ -535,7 +577,7 @@
   
           sb.append("\n");
           if ("true".equals(htmlComment))
  -           sb.append(htmlEndComment);
  +            sb.append(htmlEndComment);
           sb.append("</script>\n\n");
   
           return sb.toString();
  @@ -589,5 +631,18 @@
           }
       }
   
  +    /**
  +     * Constructs the beginning &lt;script&gt; element depending on xhtml status.
  +     */
  +    private String getStartElement() {
  +        StringBuffer start = new StringBuffer("<script type=\"text/javascript\"");
  +
  +        // there is no language attribute in xhtml
  +        if (!BaseHandlerTag.isXhtml(this)) {
  +            start.append(" language=\"Javascript1.1\"");
  +        }
  +        start.append(">");
  +        return start.toString();
  +    }
   
   }
  
  
  
  1.16      +8 -21     jakarta-struts/src/share/org/apache/struts/taglib/html/BaseFieldTag.java
  
  Index: BaseFieldTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/BaseFieldTag.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- BaseFieldTag.java	26 Oct 2002 15:08:16 -0000	1.15
  +++ BaseFieldTag.java	12 Nov 2002 03:47:42 -0000	1.16
  @@ -59,15 +59,12 @@
    *
    */
   
  -
   package org.apache.struts.taglib.html;
   
  -
   import javax.servlet.jsp.JspException;
   import org.apache.struts.util.RequestUtils;
   import org.apache.struts.util.ResponseUtils;
   
  -
   /**
    * Convenience base class for the various input tags for text fields.
    *
  @@ -77,10 +74,8 @@
   
   public abstract class BaseFieldTag extends BaseInputTag {
   
  -
       // ----------------------------------------------------- Instance Variables
   
  -
       /**
        * Comma-delimited list of content types that a server processing this form
        * will handle correctly.  This property is defined only for the
  @@ -97,7 +92,6 @@
           this.accept = accept;
       }
   
  -
       /**
        * The name of the bean containing our underlying property.
        */
  @@ -111,7 +105,6 @@
           this.name = name;
       }
   
  -
       /**
        * The "redisplay contents" flag (used only on <code>password</code>).
        */
  @@ -125,17 +118,14 @@
           this.redisplay = redisplay;
       }
   
  -
       /**
        * The type of input field represented by this tag (text, password, or
        * hidden).
        */
       protected String type = null;
   
  -
       // --------------------------------------------------------- Public Methods
   
  -
       /**
        * Generate the required input tag.
        * <p>
  @@ -150,8 +140,8 @@
           results.append(type);
           results.append("\" name=\"");
           // * @since Struts 1.1
  -        if( indexed )
  -                prepareIndex( results, name );
  +        if (indexed)
  +            prepareIndex(results, name);
           results.append(property);
           results.append("\"");
           if (accesskey != null) {
  @@ -183,8 +173,7 @@
           if (value != null) {
               results.append(ResponseUtils.filter(value));
           } else if (redisplay || !"password".equals(type)) {
  -            Object value = RequestUtils.lookup(pageContext, name, property,
  -                                               null);
  +            Object value = RequestUtils.lookup(pageContext, name, property, null);
               if (value == null)
                   value = "";
               results.append(ResponseUtils.filter(value.toString()));
  @@ -192,7 +181,7 @@
           results.append("\"");
           results.append(prepareEventHandlers());
           results.append(prepareStyles());
  -        results.append(">");
  +        results.append(getElementClose(this));
   
           // Print this field to our output writer
           ResponseUtils.write(pageContext, results.toString());
  @@ -202,7 +191,6 @@
   
       }
   
  -
       /**
        * Release any acquired resources.
        */
  @@ -214,6 +202,5 @@
           redisplay = true;
   
       }
  -
   
   }
  
  
  
  1.16      +66 -92    jakarta-struts/src/share/org/apache/struts/taglib/html/MultiboxTag.java
  
  Index: MultiboxTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/MultiboxTag.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- MultiboxTag.java	26 Oct 2002 15:08:16 -0000	1.15
  +++ MultiboxTag.java	12 Nov 2002 03:47:42 -0000	1.16
  @@ -59,19 +59,18 @@
    *
    */
   
  -
   package org.apache.struts.taglib.html;
   
  -
   import java.lang.reflect.InvocationTargetException;
  +
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.PageContext;
  +
   import org.apache.commons.beanutils.BeanUtils;
  -import org.apache.struts.action.Action;
  +import org.apache.struts.Globals;
   import org.apache.struts.util.MessageResources;
   import org.apache.struts.util.ResponseUtils;
   
  -
   /**
    * Tag for input fields of type "checkbox".  This differs from CheckboxTag
    * because it assumes that the underlying property is an array getter (of any
  @@ -86,23 +85,19 @@
   
   public class MultiboxTag extends BaseHandlerTag {
   
  -
       // ----------------------------------------------------- Instance Variables
   
  -
       /**
        * The constant String value to be returned when this checkbox is
        * selected and the form is submitted.
        */
       protected String constant = null;
   
  -
       /**
        * The message resources for this package.
        */
       protected static MessageResources messages =
  -     MessageResources.getMessageResources(Constants.Package + ".LocalStrings");
  -
  +        MessageResources.getMessageResources(Constants.Package + ".LocalStrings");
   
       /**
        * The name of the bean containing our underlying property.
  @@ -110,40 +105,35 @@
       protected String name = Constants.BEAN_KEY;
   
       public String getName() {
  -	return (this.name);
  +        return (this.name);
       }
   
       public void setName(String name) {
  -	this.name = name;
  +        this.name = name;
       }
   
  -
       /**
        * The property name for this field.
        */
       protected String property = null;
   
  -
       /**
        * The value which will mark this checkbox as "checked" if present
        * in the array returned by our property getter.
        */
       protected String value = null;
   
  -
       // ------------------------------------------------------------- Properties
   
  -
       /**
        * Return the property name.
        */
       public String getProperty() {
   
  -	return (this.property);
  +        return (this.property);
   
       }
   
  -
       /**
        * Set the property name.
        *
  @@ -151,21 +141,19 @@
        */
       public void setProperty(String property) {
   
  -	this.property = property;
  +        this.property = property;
   
       }
   
  -
       /**
        * Return the server value.
        */
       public String getValue() {
   
  -	return (this.value);
  +        return (this.value);
   
       }
   
  -
       /**
        * Set the server value.
        *
  @@ -173,14 +161,12 @@
        */
       public void setValue(String value) {
   
  -	this.value = value;
  +        this.value = value;
   
       }
   
  -
       // --------------------------------------------------------- Public Methods
   
  -
       /**
        * Process the beginning of this tag.
        *
  @@ -188,14 +174,12 @@
        */
       public int doStartTag() throws JspException {
   
  -	// Defer processing until the end of this tag is encountered
  +        // Defer processing until the end of this tag is encountered
           this.constant = null;
  -	return (EVAL_BODY_TAG);
  +        return (EVAL_BODY_TAG);
   
       }
   
  -
  -
       /**
        * Save the body contents of this tag as the constant that we will
        * be returning.
  @@ -212,7 +196,6 @@
   
       }
   
  -
       /**
        * Render an input element for this tag.
        *
  @@ -220,86 +203,77 @@
        */
       public int doEndTag() throws JspException {
   
  -	// Create an appropriate "input" element based on our parameters
  -	StringBuffer results = new StringBuffer("<input type=\"checkbox\"");
  -	results.append(" name=\"");
  -	results.append(this.property);
  -	results.append("\"");
  -	if (accesskey != null) {
  -	    results.append(" accesskey=\"");
  -	    results.append(accesskey);
  -	    results.append("\"");
  -	}
  -	if (tabindex != null) {
  -	    results.append(" tabindex=\"");
  -	    results.append(tabindex);
  -	    results.append("\"");
  -	}
  -	results.append(" value=\"");
  +        // Create an appropriate "input" element based on our parameters
  +        StringBuffer results = new StringBuffer("<input type=\"checkbox\"");
  +        results.append(" name=\"");
  +        results.append(this.property);
  +        results.append("\"");
  +        if (accesskey != null) {
  +            results.append(" accesskey=\"");
  +            results.append(accesskey);
  +            results.append("\"");
  +        }
  +        if (tabindex != null) {
  +            results.append(" tabindex=\"");
  +            results.append(tabindex);
  +            results.append("\"");
  +        }
  +        results.append(" value=\"");
           String value = this.value;
           if (value == null)
               value = this.constant;
           if (value == null) {
  -            JspException e = new JspException
  -                (messages.getMessage("multiboxTag.value"));
  -            pageContext.setAttribute(Action.EXCEPTION_KEY, e,
  -                                     PageContext.REQUEST_SCOPE);
  +            JspException e = new JspException(messages.getMessage("multiboxTag.value"));
  +            pageContext.setAttribute(Globals.EXCEPTION_KEY, e, PageContext.REQUEST_SCOPE);
               throw e;
           }
           results.append(ResponseUtils.filter(value));
  -	results.append("\"");
  -	Object bean = pageContext.findAttribute(name);
  -	String values[] = null;
  -	if (bean == null)
  -	    throw new JspException
  -		(messages.getMessage("getter.bean", name));
  -	try {
  -	    values = BeanUtils.getArrayProperty(bean, property);
  -	    if (values == null)
  -		values = new String[0];
  -	    } catch (IllegalAccessException e) {
  -		throw new JspException
  -		    (messages.getMessage("getter.access", property, name));
  -	    } catch (InvocationTargetException e) {
  -		Throwable t = e.getTargetException();
  -		throw new JspException
  -		    (messages.getMessage("getter.result",
  -					 property, t.toString()));
  -	} catch (NoSuchMethodException e) {
  -	    throw new JspException
  -		(messages.getMessage("getter.method", property, name));
  -	}
  -	for (int i = 0; i < values.length; i++) {
  -	    if (value.equals(values[i])) {
  -		results.append(" checked=\"checked\"");
  -		break;
  -	    }
  -	}
  -	results.append(prepareEventHandlers());
  -	results.append(prepareStyles());
  -	results.append(">");
  +        results.append("\"");
  +        Object bean = pageContext.findAttribute(name);
  +        String values[] = null;
  +        if (bean == null)
  +            throw new JspException(messages.getMessage("getter.bean", name));
  +        try {
  +            values = BeanUtils.getArrayProperty(bean, property);
  +            if (values == null)
  +                values = new String[0];
  +        } catch (IllegalAccessException e) {
  +            throw new JspException(messages.getMessage("getter.access", property, name));
  +        } catch (InvocationTargetException e) {
  +            Throwable t = e.getTargetException();
  +            throw new JspException(messages.getMessage("getter.result", property, t.toString()));
  +        } catch (NoSuchMethodException e) {
  +            throw new JspException(messages.getMessage("getter.method", property, name));
  +        }
  +        for (int i = 0; i < values.length; i++) {
  +            if (value.equals(values[i])) {
  +                results.append(" checked=\"checked\"");
  +                break;
  +            }
  +        }
  +        results.append(prepareEventHandlers());
  +        results.append(prepareStyles());
  +        results.append(getElementClose(this));
   
           // Render this element to our response
           ResponseUtils.write(pageContext, results.toString());
   
  -	// Continue evaluating this page
  -	return (EVAL_PAGE);
  +        // Continue evaluating this page
  +        return (EVAL_PAGE);
   
       }
   
  -
       /**
        * Release any acquired resources.
        */
       public void release() {
   
  -	super.release();
  +        super.release();
           constant = null;
  -	name = Constants.BEAN_KEY;
  -	property = null;
  -	value = null;
  +        name = Constants.BEAN_KEY;
  +        property = null;
  +        value = null;
   
       }
  -
   
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>