質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Q&A

解決済

2回答

2596閲覧

Strutsのbean:writeについて

Tsoooooooooooop

総合スコア15

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

0グッド

0クリップ

投稿2017/06/28 06:44

現在、Strutsを使用しアプリケーションを作成しています。

JSPでActionForm内に入っているString型の値をbean:write~を使用し表示しています。
そして、表示する際に入っている値が数字8桁で、それを日付のように表示したいです。

<bean:write name="" property="" format="####/##/##" >

と書きましたができませんでした。
formatはdate型か数値型しか対応していないと、ネットで調べる限りでは書いてありました。

何か方法はあるのでしょうか。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

2016/06/25 2016-06-25

なお、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

投稿2017/06/28 08:59

編集2017/06/28 09:10
kuniku

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

formatに指定するのは、日付用フォーマットか、数値用フォーマットのどちらかを選べます。

####で指定するのではなく、日付や時刻に対する文字が定まっていますので、これにそって定義します。

http://struts.wasureppoi.com/taglib/05_write_date.html

投稿2017/06/28 08:13

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tsoooooooooooop

2017/06/28 08:40

回答ありがとうございます。 そのフォーマットが適用されるのは、intなどの数値型と、Date型のみで、String型にも反映されるのでしょか??
A-pZ

2017/06/28 15:00

Stringをそのまま出す機能ではないので、それぞれの型に変換はしましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問