前提・実現したいこと
Java初心者です。
JavaのBean Vlidationの@SIZEを使用し、LISTのサイズをバリデートしたいと考えております。
最大値にpropatiesからとってきた値を入れた変数を使用したいのですが、
注釈属性 Size.max の値は、定数式である必要がありますとエラーになってしまい指定することができません。
static finalを付けていたら定数になっているのかと思っていたのですが、違うのでしょうか?
@SIZE(max = _MAX_SIZE)のように指定できる方法をご教授願えればと思います。
発生している問題・エラーメッセージ
注釈属性 Size.max の値は、定数式である必要があります
該当のソースコード
java
1public class SampleModel { 2 3 private static final String _CODE_TYPE = "sample"; 4 private static final String _KEY= "sampleKey"; 5 private static final int _MAXLSIZE = Integer 6 .valueOf(getCodeName(_CODE_TYPE, _KEY)); 7 8 // ここの_MAXLSIZEでエラーメッセージ「注釈属性 Size.max の値は、定数式である必要があります」が出てくる 9 @Size(min = 1, max = _MAXLSIZE) 10 private List<String> modelCds; 11 12 private String getCodeName(String type, String code) { 13 // 独自フレームワークで実装されている 14 // 指定のpropertiesからtype, codeに一致する値を返却する 15 return conf.getProperty("code." + type + "." + code); 16 } 17}
試したこと
private static final int _MAXLIMIT = 1000;
にするとエラーはなくなりました。
propertiesから読み込むことで、可変な値となってしまっているのでしょうか?
補足情報(FW/ツールのバージョンなど)
JAVA 8
あなたの回答
tips
プレビュー