Struts2 java.math.BigDecimalを使おうとするとエラー(対応方法有り)



Struts2 BigDecimalを使おうとするとエラーが出るそうです(・∀・)



いやまさかΣ(゚Д゚)




と思いつつ実装(´・ω・`)






ん?


本当にエラー出やがったwww



原因は「12.34」などの小数点をBigDecimal型ではなく、String型と判断してしまう現象(´・ω・`)





まじかwww
Struts2空気嫁wwww




んでアイディアを頂いたんだが
「整数部と小数部で入力項目を分ける」・・・・・(´・ω・`)




それも有りだけど(;´Д`)


んで色々調べてもらったら(ぇ

入出力(リクエストパラメーター)の項目に対して型変換する方法があるそうだ(・∀・)

このサイトも発見したのでこれを参考にするといいでしょう。
https://sites.google.com/site/soracane/home/struts2nitsuite/09-rikuesutoparametano-xing-bian-huan-conversion



これを利用すると
BigDecimalTypeConverter.java
package xxx.yyy.zzz.converter;

import java.math.BigDecimal;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.opensymphony.xwork2.conversion.TypeConversionException;

/**
 * BigDecimal型変換
 *
 */
public class BigDecimalTypeConverter extends StrutsTypeConverter {

    /**
     * Object変換処理
     *
     * @param context コンテキスト
     * @param values HTML値(複数指定あり)
     * @param type 変換先クラス
     * @return オブジェクト
     * @throws TypeConversionException
     */
    @SuppressWarnings("rawtypes")
    @Override
    public Object convertFromString(Map context, String[] values, Class type) {

        // 空の場合、nullを返却
        if (values == null || values.length < 1 || values[0].trim().length() < 1) {
            return null;
        }

        // 型変換
 Object toObj;
 try {
  toObj = new BigDecimal(values[0]);
 } catch (Exception e) {
  throw new TypeConversionException("BigDecimal型変換失敗。", e);
 }

 return toObj;
    }

    /**
     * 文字列変換処理
     *
     * @param context コンテキスト
     * @param obj 値
     * @return 文字列
     */
    @SuppressWarnings("rawtypes")
    @Override
    public String convertToString(Map context, Object obj) {

        // nullの場合、空文字列とする
 if (obj == null) {
     return "";
 }

 return obj.toString();
    }
}



src/xwork-conversion.properties または resources/xwork-conversion.properties に
# syntax: <type> = <converterclassname>
java.math.BigDecimal=xxx.yyy.zzz.converter.BigDecimalTypeConverter



これでBigDecimal型にできるな(・∀・)





あっww


過去の日記「struts2 + HTML5 input type date は無理っぽいぞw」
http://guchi-programmer.blogspot.com/2013/07/struts2-html5-input-type-date.html



これも対応できるなwww


この記事見て諦めた人ゴメンwwww

by Guy She
ダブリターンしないでくれよwww
hunt the world じゃないからねw


ちゃんと次回記事書くからww




過去記事で謝ります(´・ω・`)

0 件のコメント:

コメントを投稿