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 件のコメント:
コメントを投稿