Vous devez ajouter la validation suivante de 2 champs de type date dans une page web OAF:
Si le champ Date début < Date fin alors afficher un message d'erreur.
Solution:
Je ne pense pas que vous devriez mettre cette validation au niveau du contrôleur, mais plutôt au niveau de l'objet entité (Entity Object). Selon le guide du développeur d'OAF: objets d'entité BC4J encapsulent les règles métier (validations, les actions et ainsi de suite) associés à une ligne d'une table de base de données.
Par conséquent, nous devrions mettre cette validation au niveau de l'objet entité. Pour mieux comprendre, je compare cela au déclencheur WHEN-VALIDE-RECORD de Oracle Forms lorsque vous souhaitez valider plus d’un champ au niveau de l'enregistrement.
Si vous cochez l'objet d'entité de votre personnalisation, vous verrez un fichier de classe Java pour la mise en œuvre de l'objet entité. Il faut mettre à jour la fonction validateEntity ():
/*
Vous déclarez 2 variables de type Date and vous utilisez la méthode définit dans la EO pour obtenir la valeur saisie par l’utilisateur.
*/
Date EmpTempFromvalue = getEmpTempFrom();
Date EmpTempFromTo = getEmpTempTo();
/*
Si la date de début est > que la date de fin alors afficher une erreur.
*/
if (EmpTempFromvalue.getvalue().getTime() > EmpTempFromTo.getvalue().getTime())
{
throw .newOAAttrValException(OAException.TYP_ENTITY_OBJECT, //indicates EO source value
getEntityDef().getFullName(), //entity name
getPrimaryKey(), //entity primary key
"Date", //attribute Name
EmpTempFromvalue.getvalue(), //bad attribute
"CUST", //message application short name
"CUST_HR_F1A_CONTRACT_DATE"); // Message name
}
CUST_HR_F1A_CONTRACT_DATE est message qu’on définit dans l’écran Messsage de AOL, par exemple en utilisant la responsabilité Application Developer.
Vous voyez maintenant que la validation entre 2 champs de type date n'est pas très compliqué en utilisant Application Framework Oracle.