It’s authoritatively documented in both the JavaBeans Spec and EL Specification.
To take the boolean
property as an example, it’s described in chapter 8.3.2 of JavaBeans spec:
8.3.2 Boolean properties
In addition, for boolean properties, we allow a getter method to match the pattern:
public boolean is<PropertyName>()
;This “is<PropertyName>” method may be provided instead of a “get<PropertyName>” method,
or it may be provided in addition to a “get<PropertyName>” method.In either case, if the “is<PropertyName>” method is present for a boolean property then we will
use the “is<PropertyName>” method to read the property value.An example boolean property might be:
public boolean isMarsupial(); public void setMarsupial(boolean m);
So, #{bean.marsupial}
expects exactly the above getter/setter pair.
And in chapter 1.23.5 of EL spec:
1.23.5 Coerce A to Boolean or boolean
- If
A
isnull
and the target type is not the primitive typeboolean
, returnnull
- If
A
isnull
or""
, returnfalse
- Otherwise, if
A
is aBoolean
, returnA
- Otherwise, if
A
is aString
, andBoolean.valueOf(A)
does not throw an
exception, return it- Otherwise, error