2016-10-17 15 views
2

値のようなものでしょうため検証注釈あります:春の検証が

@ValidString({"US", "GB", "CA"}) 
final String country; 

を、文字列は、アレイ内のサポートされている値の一つであることを検証するには?

+1

Javaには列挙型があります。 –

+0

[列挙型の値と注釈を使用した[Java文字列の検証]の重複の可能性あり(http://stackoverflow.com/questions/6294587/java-string-validation-using-enum-values-and-annotation) –

+2

これは役立つ可能性があります。http: //stackoverflow.com/questions/4922655/javax-validation-to-validate-list-of-values – Pete

答えて

7

これを行うにはカスタムアノテーションを作成する必要があります。文字列比較でenumを受け入れるアノテーションがあり、このようなものを使用するといいでしょう。

public enum CountryCode { 
    US, 
    GB, 
    CA; 
} 

@ValidateString(CountryCode.STRING) 
String code; 

あなたはこの質問 Java String validation using enum values and annotation

Aですべての応答を通して行くことはないので、きれいな方法は、正規表現のすべての国コードと@Patternアノテーションを使用することです。

@Pattern(regexp="^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$",message="invalid code") 
private String countryCode; 
関連する問題