私がここで抱えている問題は、部分的な更新を許可する HTTP PATCH メソッドにあります。
以下のようなリクエストボディがあります。
{
"userAssociationStatus": "ACTIVE",
"accountHolderAssociationStatus": "ACTIVE",
}
リクエスト マッピング用の Bean:-
public class PatchRequestVO {
@CheckEnum(message = "Enumeration value is not found for userAssociationStatus.", enumValue = { "ACTIVE", "INACTIVE" })
private String userAssociationStatus;
@CheckEnum(message = "Enumeration value is not found for accountHolderAssociationStatus.", enumValue = { "ACTIVE", "INACTIVE" })
private String accountHolderAssociationStatus;
//getters and setters
}
check enum は、渡される値が enumValue リストの要素の 1 つと完全に一致するかどうかを検証するカスタム アノテーションです。
私が直面している問題は、以下の 2 つの要求にあります。
{
"accountHolderAssociationStatus": "ACTIVE"
}
上記のリクエストでは、userAssociationStatusが存在しないため、PATCH であるため、それを無視して他のステータスを更新します。
次のリクエストは
{
"userAssociationStatus": null,
"accountHolderAssociationStatus": "ACTIVE"
}
このシナリオでは、オブジェクトがリクエストにnullとして存在するため、enum not foundをスローしたいと考えています。
上記の両方のリクエストで、フィールドが null に等しい場合と、フィールドが存在しない場合、userAssociationStatusは null に等しくなります。そのため、リクエストの観点から何が起こっているのかを区別することはできません。
問題は、存在しないフィールドと null として渡される値をどのように区別するかです。
必要に応じて、より多くの情報を提供できます。