Annotation Type HasFormData


REST has-form-data annotation. Identifies whether or not an HTTP request has the specified multipart form POST parameter.

Can be used in the following locations:

  • Arguments and argument-types of server-side @RestOp-annotated methods.

This annotation can be used to detect the existence of a parameter when it's not set to a particular value.

Example:

@RestPost public void doPost(@HasFormData("p1") boolean p1) {...}

This is functionally equivalent to the following code:

@RestPost public void doPost(RestRequest req) { boolean p1 = req.getFormParam("p1").isPresent(); ... }

The parameter type must be either boolean or Boolean.

The following table shows the behavioral differences between @HasFormData and @FormData:

Body content @HasFormData("a") @FormData("a")
a=foo true "foo"
a= true ""
a true null
b=foo false null
Important note concerning FORM posts

This annotation should not be combined with the @Content annotation or RestRequest.getContent() method for application/x-www-form-urlencoded POST posts, since it will trigger the underlying servlet API to parse the body content as key-value pairs, resulting in empty content.

The @HasQuery annotation can be used to check for the existing of a URL parameter in the URL string without triggering the servlet to drain the body content.

See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    FORM parameter name.
    A synonym for name().
  • Element Details

    • name

      FORM parameter name. Required. The name of the parameter. Parameter names are case sensitive.
      Notes:
      • The format is plain-text.
      Returns:
      The annotation value.
      Default:
      ""
    • value

      A synonym for name().

      Allows you to use shortened notation if you're only specifying the name.

      The following are completely equivalent ways of defining the existence of a form post entry:

      public Order placeOrder(@HasFormData(name="petId") boolean hasPetId) {...}

      public Order placeOrder(@HasFormData("petId") boolean hasPetId) {...}

      Returns:
      The annotation value.
      Default:
      ""