過去の記事で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 件のコメント:
コメントを投稿