Bom dia,
Hoje tive um caso de uso complicado que partilho convosco. Uma situação não suportada.
Necessidade:
Um campo que no nosso modelo de dados não é obrigatório deverá passar a ser considerado como tal. Para tal o caminho aconselhado é na respestiva classe Manager do modelo de dados em causa, no método postInicialization adicionar essas exceções:
public class TeamModelManager extends AbstractModelManager
{
... previous code ...
/**
* Post initialization.
*/
@Override
public void postInitialization()
{
... previous code ...
ContractFieldAttributes.client.setMandatory(true);
ContractFieldAttributes.classifier.setMandatory(true);
super.postInitialization();
}
}
Há no entanto um caso de uso em que isto não funciona. Com @ParameterBean.
Nestas situações o campo vai continuar a ser tratado como não obrigatório.
A razão tem a ver com a ordem de inicialização da DIF. Primeiro são processadas todas as anotações do DEM e criado esse modelo em RAM, e só depois são inicializdos os objetos para que possam já tirar partido do DEM. Inclusive os Models.
Para esta situação no imediato seremos obrigados a adicionar nos ParameterBeans em que tenhamos feito este tipo de alterações a aparentemente redundante indicação de que os campos são obrigatórios. Da seguinte forma:
/**
* The Contract.
*/
@ParameterBean(linkToForm = "contractForm", additionalRequiredFields = {"client", "classifier"})
protected Contract contract;
Com os melhores cumprimentos,