Consider Using a Reset Property When Capturing Input
In a small application, JSP pages can do
more than generate responses. The JSP standard
<jsp:setProperty>
action, for instance, makes it easy to capture user input in a bean:
<jsp:setProperty name="myBean" property="*" />
The <jsp:setProperty> action gets a list of
all request parameter names and calls all setter methods for bean
properties with matching names. The setter methods for properties
that don’t match a parameter name are not called,
nor are setter methods for properties that match parameters with an
empty string value.
For a bean in the page or request scope, this is not a problem,
assuming the bean provides appropriate default values for the
properties that are not set. If the bean instead is kept in the
session scope, and the user is supposed to be able to update its
values, you need to be careful. The effect of the setter method
calling rules is that if the user deselects all checkboxes in a group
or leaves a text field empty in the form that invokes the page with
the <jsp:setProperty> action, the properties
representing the checkbox group and the text field are left
untouched, not cleared as would be expected.
A workaround for this problem is to add a setter method for a dummy
property named reset:
public class MyBean implements Serializable {
. . .
public void setReset(String dummy) {
intProperty = -1;
stringProperty = null;
. . .
}
}All the setter method does is reset all properties to their default values. The ...