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