Parse parameters into domain objects

All HTTP request parameter names and values are entirely textual, and the Servlet Specification treats them as simple Strings. The problem always arises in a web application of how to translate or parse such Strings into more meaningful objects in the problem domain. Typically, this means performing two kinds of operations:
  1. translating Strings into Integer, BigDecimal, and so on
  2. grouping such translated items into complete Model Objects

These operations will vary depending on the framework you're using.

Example

This example is taken from an application built with the WEB4J framework.


/** Build a Model Object from request parameters. */
public final class RestoAction extends ActionTemplateListAndEdit {

  public static final RequestParameter RESTO_ID = RequestParameter.withLengthCheck("Id");
  public static final RequestParameter NAME = RequestParameter.withLengthCheck("Name");
  public static final RequestParameter LOCATION = RequestParameter.withLengthCheck("Location");
  public static final RequestParameter PRICE = RequestParameter.withLengthCheck("Price");
  public static final RequestParameter COMMENT = RequestParameter.withLengthCheck("Comment");

  protected void validateUserInput() {
    try {
      ModelFromRequest builder = new ModelFromRequest(getRequestParser());
      fResto = builder.build(Resto.class, RESTO_ID, NAME, LOCATION, PRICE, COMMENT);
    }
    catch (ModelCtorException ex){
      //displays error message to end user
      addError(ex);
    }    
  }
  
  //..many items elided

  //target Model Object, built from user input
  private Resto fResto;
} 

In this case, the parsing of raw HTTP request parameters is shared between these classes:

Validation and parsing of HTTP request parameters are related topics. See the Repel invalid requests topic for further information.

See Also :
Repel invalid requests
Command objects
Model Objects
A Web App Framework - WEB4J
Would you use this technique?
Yes   No   Undecided   
© 2014 Hirondelle Systems | Source Code | Contact | License | RSS
Individual code snippets can be used under this BSD license - Last updated on September 21, 2013.
Over 2,000,000 unique IPs last year - Built with WEB4J.
- In Memoriam : Bill Dirani -