Beans.copyでBooleanを扱う(続き)
前回のエントリのコメントにも書きましたが、
>逆にFormのプロパティをbooleanからStringにするというのはNGということですか?
やはり、なにも手を加えない状態だと、boolean(Checkbox)からStringの変換はtrue -> "true" で false -> "false" になりますね。
だから、boolean を任意のStringに変換したい場合は自作Converterを使うことになるのかな。もっとも、DB側をvarchar(5)とかにして、"true"や"false"を格納してもいいんですけどね。
ということです(違う?)
せっかくなので、Commons Lang のBooleanUtils ではなく、Seasar2のBooleanConversionUtilを使うことにしました。
import org.seasar.framework.beans.Converter; import org.seasar.framework.util.BooleanConversionUtil; public class BooleanConverter implements Converter { public BooleanConverter() { } public Object getAsObject(String value) { return BooleanConversionUtil.toBoolean(value); } public String getAsString(Object value) { return BooleanConversionUtil.toBoolean(value) ? "1" : "0"; } public boolean isTarget(Class clazz) { return clazz == Boolean.class; } }
とにもかくにも、やりたいことは実現できていますが、もっとスマートなほうほうがあればご教授ください。