@HasFormData

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

Example:

@RestMethod(name=POST) public void doPost(@HasFormData("p1") boolean p1) {...}

This is functionally equivalent to the following code:

@RestMethod(name=POST) public void doPost(RestRequest req) { boolean p1 = req.hasFormData("p1"); ... }

The parameter type must be either boolean or {@link java.lang.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 {@link oaj.http.annotation.Body @Body} annotation or {@link oajr.RestRequest#getBody()} 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 {@link oaj.http.annotation.HasQuery @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.