-
Type: Bug
-
Resolution: Fixed
-
Priority: Major
-
Affects Version/s: 1.3.0-beta-2, 1.2.8
-
Component/s: S2Struts
-
None
[Seasar-user:6101]
以前、検証対象になっているDTOに java.sql.Date が入っている場合
例外が発生しましたので対応していただいたのですが、
同じような現象が、java.math.BigDecimal でも起こってしまいました。
デバッグして確認したところ
根本の原因としては、BigDecimal にはsetScaleメソッドが存在するのですが
getScaleメソッドが存在しないため、実際に検証しようとしたときに
getScaleメソッドが見つからないと例外を起こしていました。
org.seasar.struts.validator.factory.AbstractValidatorAnnotationHandler
の registerFields(Form, Field, BeanDesc) には
hasMethodForValidationメソッドを使用して、指定のプロパティが検証対象であるか
否かを
判断しているところがあります。
そこで、
hasMethodForValidationメソッドでの判断で、今のところ
propDesc.hasWriteMethod()
の値のみで判断していますので、
propDesc.hasReadMethod()
の値も使用して判断してみては、と思うのですが、いかがでしょうか。