niallp      2004/07/21 18:11:43

  Modified:    src/share/org/apache/struts/taglib/html FormTag.java
  Log:
  Refactor FormTag to make it easier to override
  
  Revision  Changes    Path
  1.61      +60 -52    
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.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- FormTag.java      21 Jul 2004 21:02:22 -0000      1.60
  +++ FormTag.java      22 Jul 2004 01:11:42 -0000      1.61
  @@ -473,16 +473,47 @@
        * @since Struts 1.1
        */
       protected String renderFormStartElement() {
  -        HttpServletResponse response =
  -            (HttpServletResponse) this.pageContext.getResponse();
               
           StringBuffer results = new StringBuffer("<form");
  +
  +        // render attributes
  +        renderName(results);
  +        renderAttribute(results, "method", getMethod() == null ? "post" : 
getMethod());
  +        renderAction(results);
  +        renderAttribute(results, "accept-charset", getAcceptCharset());
  +        renderAttribute(results, "class", getStyleClass());
  +        renderAttribute(results, "enctype", getEnctype());
  +        renderAttribute(results, "onreset", getOnreset());
  +        renderAttribute(results, "onsubmit", getOnsubmit());
  +        renderAttribute(results, "style", getStyle());
  +        renderAttribute(results, "id", getStyleId());
  +        renderAttribute(results, "target", getTarget());
  +
  +        // Hook for additional attributes
  +        renderOtherAttributes(results);
  +
  +        results.append(">");
  +        return results.toString();
  +    }
  +
  +    /**
  +     * Renders the name attribute
  +     */
  +    protected void renderName(StringBuffer results) {
           results.append(" name=\"");
           results.append(beanName);
           results.append("\"");
  -        results.append(" method=\"");
  -        results.append(method == null ? "post" : method);
  -        results.append("\" action=\"");
  +    }
  +
  +    /**
  +     * Renders the action attribute
  +     */
  +    protected void renderAction(StringBuffer results) {
  +
  +        HttpServletResponse response =
  +            (HttpServletResponse) this.pageContext.getResponse();
  +
  +        results.append(" action=\"");
           results.append(
               response.encodeURL(
                   TagUtils.getInstance().getActionMappingURL(
  @@ -490,49 +521,13 @@
                       this.pageContext)));
                   
           results.append("\"");
  -        
  -        if (acceptCharset != null) {
  -            results.append(" accept-charset=\"");
  -            results.append(getAcceptCharset());
  -            results.append("\"");
  -        }
  -        if (styleClass != null) {
  -            results.append(" class=\"");
  -            results.append(styleClass);
  -            results.append("\"");
  -        }
  -        if (enctype != null) {
  -            results.append(" enctype=\"");
  -            results.append(enctype);
  -            results.append("\"");
  -        }
  -        if (onreset != null) {
  -            results.append(" onreset=\"");
  -            results.append(onreset);
  -            results.append("\"");
  -        }
  -        if (onsubmit != null) {
  -            results.append(" onsubmit=\"");
  -            results.append(onsubmit);
  -            results.append("\"");
  -        }
  -        if (style != null) {
  -            results.append(" style=\"");
  -            results.append(style);
  -            results.append("\"");
  -        }
  -        if (styleId != null) {
  -            results.append(" id=\"");
  -            results.append(styleId);
  -            results.append("\"");
  -        }
  -        if (target != null) {
  -            results.append(" target=\"");
  -            results.append(target);
  -            results.append("\"");
  -        }
  -        results.append(">");
  -        return results.toString();
  +    }
  +
  +    /**
  +     * 'Hook' to enable this tag to be extended and 
  +     *  additional attributes added.
  +     */
  +    protected void renderOtherAttributes(StringBuffer results) {
       }
   
       /**
  @@ -562,6 +557,19 @@
           }
   
           return results.toString();
  +    }
  +
  +    /**
  +     * Renders attribute="value" if not null
  +     */
  +    protected void renderAttribute(StringBuffer results, String attribute, String 
value) {
  +        if (value != null) {
  +            results.append(" ");
  +            results.append(attribute);
  +            results.append("=\"");
  +            results.append(value);
  +            results.append("\"");
  +        }
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to