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