[STRUTS-39] FormBeanにjava.math.BigDecimalクラスのプロパティがあるとjava.math.BigDecimalクラスのメソッドに対して型検証が自動付加され、検証時に例外が発生する Created: 2007-02-12  Updated: 2007-02-13  Resolved: 2007-02-13

Status: Resolved
Project: S2Struts
Component/s: S2Struts
Affects Version/s: 1.3.0-beta-2, 1.2.8
Fix Version/s: 1.2.9, 1.3.0-beta-3

Type: Bug Priority: Major
Reporter: kanagashi Assignee: kanagashi
Resolution: Fixed Votes: 0
Labels: None


 Description   

[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()
の値も使用して判断してみては、と思うのですが、いかがでしょうか。



 Comments   
Comment by kanagashi [ 2007-02-13 ]

AbstractValidatorAnnotationHandler#hasMethodForValidation()メソッドでの判断でpropDesc.hasReadMethod()の確認も追加しました。
あと
Number.classから派生しているクラスに対してはネストしたValidationの設定を行わないように修正しました。

Generated at Mon Dec 15 17:55:27 JST 2025 using Jira 10.6.1#10060001-sha1:a6461e220f274b29ced7ac9295492f2465fe5ef5.