ActionFormのクラスでstartというString型のプロパティがあるとして、これをjspで日付フォーマットして表示させたい場合に
jspから、${}やstrutsのカスタムタグでアクセスする場合(ELにおけるオブジェクトへのアクセス)は、
getterメソッドやgetメソッドを呼び出します。その作用を利用して、独自でgetterのみのメソッドを作成し、
そのgetterメソッドがjsp側から呼び出されるようにして対応することでもできます。
コード書かないと伝わらないように思うので、こんな感じで?というコードを載せておきます
java
1
2XxxForm
3
4 //FIXME ダミーデータとして初期値を入れておく、本来は初期値はセットしない
5 private String start = "20160625";
6
7 public String getStart() {
8 return start;
9 }
10
11 public java.util.Date getDummyStart() {
12
13 java.util.Date dummy = null;
14
15 if(start == null || start.isEmpty()){
16 //何らかあれば
17 }else{
18
19 try {
20 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
21 return format.parse(start);
22 } catch (ParseException e) {
23 //TODO validationされており形式が正しいことが前提
24 throw new RuntimeException(e);
25 }
26 }
27 return dummy;
28 }
jsp側では、strutsのbean writeかjstlのfunction(fmt)を使う
jsp
1<fmt:formatDate value="${xxxForm.dummyStart}" pattern="yyyy/MM/dd"/>
2<br>
3<bean:write name="xxxForm" property="dummyStart" format="yyyy-MM-dd" />
4
表示されるhtml
なお、SAStrutsというプロダクトでは、f:date というELで、この問題に対応しています。
参考ページ
http://snowhiro.web.fc2.com/sastruts/sastruts_06_func_date.html
https://github.com/seasarorg/sa-struts/blob/master/src/main/java/org/seasar/struts/taglib/S2Functions.java
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。