bir dize uzunluğunu doğrulamak için. javax.validation: Kısıtlama Bazı fasulye alanlar değerlerini doğrulamak <code>javax.validation</code> kullanıyorum bayt
Bu
Normalde ne kullanın:public class Market {
@NotNull
@Size(max=4)
private String marketCode;
@Digits(integer=4, fraction=0)
private Integer stalls;
// getters/setters
}
Bu, her Market
örneği 4
karakter maksimum uzunluğu olan bir pazar kodunu ve 4 tamsayı basamak maksimum durak bir dizi olduğundan emin olun ve 0 ondalık basamak.
Şimdi, DB/den/mağaza verilerini yüklemek için bu fasulye kullanın. Gördüğünüz gibi
CREATE TABLE MARKETS (
MARKET_CODE VARCHAR2(4 BYTE) NOT NULL,
STALLS NUMBER(4,0)
)
, ben MARKET_CODE
en fazla 4 bayt uzunluğunda olabilir: DB ise
Markets
var.
@Size
ek açıklaması, dizenin en fazla 4
karakter uzunluğunda olup olmadığını kontrol eder, bu da yanlıştır.
Soru şu: string bayt karakterler yerine kontrol edecektir @Size
gibi bir açıklama var mı?
4 bayt? Muhtemelen "string" i kontrol eden kendi doğrulayıcıya ihtiyaç duyacaksınız .getBytes (Charsets.UTF_8) .length' – ptomli
MarketCode'daki karakterlerin her biri bir bayta sığması garanti ediliyor mu? – Simon
@ptomli "WE8MSWIN1252" gibi görünüyorlar. Sorun şu ki, test ortamında olduğum için, üretim ortamındaki DB'nin aynı şifrelemeye sahip olup olmadığını bilmiyorum ... – BackSlash