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]