Another benefit is having an opportunity to add
validation to the component with minimal efforts. The next section will show how
this can be done.
Adding Simple Validation
What we are going to do here is not a robust and universal example of user input
validation. However, the benefit of this approach is its extreme simplicity. You can
always take it as a starting point and go further, but as for me, the approach is good
enough to use it as it is.
Let's say we want the date accepted by the component to be no earlier than a certain
limit. Let's add the appropriate parameter to the component's class:
@Parameter
private Date dateFrom;
We can add this parameter in the component's declaration in the page template:
t:dateFrom="lowerLimit"/>
We shall also provide a value for this parameter in the page class, like this:
public Date getLowerLimit()
{
return new Date();
}
We are going to check if the date submitted by the user is no earlier than the
current date, and if there is a problem, we are going to ask Tapestry to take
appropriate measures. For this, we need to inject a ValidationTracker which is
achieved like this:
@Environmental
private ValidationTracker tracker;
Chapter 8
[ 221 ]
But where do we put the code to do the check? DateInput contains three Select
components, the values selected in those components are being stored in the
DateInput class by using appropriate setter methods, for day, month, and year.
Pages:
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276