0
エンティティを作成して更新するときに、フォームのさまざまな検証スタイルを探しています。Spring MVCでの作成と更新のための異なるバリデータ
インスタンスの場合、 "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つのエンティティでは、作成操作のために "validateNew"メソッドを定義し、更新操作のために "validateUpdate"メソッドを定義しました。これは動作しますが、数十のエンティティに対して同じメソッドを適用するのは難しいです。 – devrim
私にとっては、より多くのコードを書くのが良いですが、簡単に追加できるように新しい機能を追加したいときです。しかし、いくつかの共通ロジックを記述し、2つの方法で呼び出すことができます。あるいは、リフレクションを使って動的コードを書くこともできます。 –
私も、私はより明確なコードを書くことを好む。しかし、プロの世界では、開発者は多くのコードに書き込むと言うことができます。私がコードを開発している間、私はそれをより専門的にしようとします、そして、私が何をするかを確信することはできません。 – devrim