struts2にHTML5のinput type=date を対応させてみた。ソース有



過去の記事でstruts2はHTML5のinput type=date に対応していないと記載してしまいすみませんでした。



今日はその対応方法を記載します。


前回書いた記事の応用になります。


http://guchi-programmer.blogspot.com/2014/01/struts2-javamathbigdecimal.html




まずゎxwork-conversion.properties
# syntax: <type> = <converterclassname>
java.util.Date=xxx.yyy.zzz.converter.DateTypeConverter



xxx.yyy.zzz.converter.DateTypeConverterを作成
package xxx.yyy.zzz.converter;

import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.opensymphony.xwork2.conversion.TypeConversionException;

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

    private static final String format = "yyyy-MM-dd";

    /**
     * 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 || StringUtil.trimWhiteSpace(values[0]).length() < 1) {
            return null;
        }

        // 型変換
        Object toObj;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            sdf.setLenient(false);
            toObj = sdf.parse();
       } catch (Exception e) {
            throw new TypeConversionException("Date型への変換に失敗しました。", e);
       }

       return toObj;
    }

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

        // nullの場合、空文字列とする
        if (obj == null) {
            return "";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format((Date)obj);
    }
}

そしてJSPにはこんな感じで書いてください。
<input type="date" name="inputDate" value="<s:property value='inputDate'/>"/>




これで動かなかったらコメントで文句書いてくれ(´・ω・`)



治すよ(´・ω・`)


お前らブラックで頑張ってんだろ?



残業がんばれよ?

0 件のコメント:

コメントを投稿