Spring MVC中创建和更新的不同验证器

时间:2016-10-13 10:37:34

标签: spring validation crud

我在创建和更新实体时为表单寻找不同的验证样式。

对于Instance,当我创建一个" UserClass"对象它需要一个ID来定义,但是当我更新时,我不再需要ID,因为它是由用户在创建步骤中定义的。我有很多实体,我需要找到最合适的方式。

例如这是合乎逻辑的吗?

public interface RecordGroupValidator {

    public void validateNew(RecordGroup recordGroup, Errors errors);

    public void validateUpdate(RecordGroup recordGroup, Errors errors);
}

验证者:

public class RecordGroupValidatorImpl implements RecordGroupValidator {

    @Autowired
    RecordGroupService recordGroupService;

    @Override
    public void validateNew(RecordGroup recordGroup, Errors errors) {
        if (!ValidationHandler.validText(recordGroup.getIds())) {
            errors.rejectValue(ColumnIdentifier.COLUMN.Ids.name(), TextParameters.SERVLET_RESPONSE.InvalidParameter.getText());
        }
        if (!ValidationHandler.validText(recordGroup.getName())) {
            errors.rejectValue(ColumnIdentifier.COLUMN.Name.name(), TextParameters.SERVLET_RESPONSE.InvalidParameter.getText());
        }
        if (recordGroup.getRecordGroupType() == null) {
            errors.rejectValue(ColumnIdentifier.COLUMN.RecordGroupType.name(), TextParameters.SERVLET_RESPONSE.InvalidParameter.getText());
        }
        if (recordGroupService.idsExist(recordGroup.getIds())) {
            errors.rejectValue(ColumnIdentifier.COLUMN.Ids.name(), TextParameters.SERVLET_RESPONSE.DuplicateEntry.getText());
        }
        if (recordGroupService.nameExist(recordGroup.getName())) {
            errors.rejectValue(ColumnIdentifier.COLUMN.Name.name(), TextParameters.SERVLET_RESPONSE.DuplicateEntry.getText());
        }
}

    @Override
    public void validateUpdate(RecordGroup recordGroup, Errors errors) {
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, ColumnIdentifier.COLUMN.Name.name(), TextParameters.SERVLET_RESPONSE.InvalidParameter.getText());
        if (recordGroup.getRecordGroupType() == null) {
            errors.rejectValue(ColumnIdentifier.COLUMN.Type.name(), TextParameters.SERVLET_RESPONSE.InvalidParameter.getText());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你应该创建两个验证。一个用于创建,一个用于更新。这将创建聪明的架构。因为现在你只有一个区别,但将来你可以拥有更多。在我看来,你现在应该分开它们。