In this example, we override 2 methods (preInsert and preUpdate) to do some basic validation checking.
Example 15.3. Validation checking in interceptor
import org.dbforms.config.*; import org.dbforms.event.*; import java.sql.*; import java.util.*; import javax.servlet.http.*; public class CheckCustomerData extends DbEventInterceptorSupport { private int checkCustomer(FieldValues fieldValues) // method invented by developer throws ValidationException { String lastName = (String) fieldValues.get("lastname").getFieldValue(); String pCode = (String) fieldValues.get("pcode").getFieldValue(); String city = (String) fieldValues.get("city").getFieldValue(); // perform form-validation if (lastName == null || lastName.trim().length()==0 || pCode == null || pCode.trim().length()==0 || city == null || city.trim().length()==0) { throw new ValidationException("Please fill out the form completely!"); } else return GRANT_OPERATION; } public int preInsert(HttpServletRequest request, Table table, FieldValues fieldValues, DbFormsConfig config, Connection con) throws ValidationException { return checkCustomer(fieldValues); } public int preUpdate(HttpServletRequest request, Table table, FieldValues fieldValues, DbFormsConfig config, Connection con) throws ValidationException { return checkCustomer(fieldValues); } }
Remarks:
There is an Exception -- org.dbforms.config.ValidationException
which may be thrown to signal a message to the end-user. In fact, returning the integer constant
DENY_OPERATION
defined in
DbEventInterceptor
leads to similar results (but with an unspecific error message and no generic message)