Package jodd.lagarto.form

Source Code of jodd.lagarto.form.FormTag

// Copyright (c) 2003-2014, Jodd Team (jodd.org). All Rights Reserved.

package jodd.lagarto.form;

import jodd.lagarto.LagartoParser;
import jodd.servlet.JspResolver;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;

/**
* Magic form tag populates HTML form with values.
*/
public class FormTag extends BodyTagSupport {

  /**
   * Starts the tag.
   */
  @Override
  public int doStartTag() {
    return EVAL_BODY_AGAIN;
  }

  /**
   * Performs smart form population.
   */
  @Override
  public int doAfterBody() throws JspException {
    BodyContent body = getBodyContent();
    JspWriter out = body.getEnclosingWriter();

    String bodytext = populateForm(body.getString(), new FormFieldResolver() {
      public Object value(String name) {
        return JspResolver.value(name, pageContext);
      }
    });

    try {
      out.print(bodytext);
    } catch (IOException ioex) {
      throw new JspException(ioex);
    }
    return SKIP_BODY;
  }

  /**
   * Ends the tag.
   */
  @Override
  public int doEndTag() {
    return EVAL_PAGE;
  }

  protected String populateForm(String formHtml, FormFieldResolver resolver) {
    LagartoParser lagartoParser = new LagartoParser(formHtml, true);
    StringBuilder result = new StringBuilder();

    lagartoParser.parse(new FormProcessorVisitor(result, resolver));

    return result.toString();
  }

}
TOP

Related Classes of jodd.lagarto.form.FormTag

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.