- 締切済み
日時の表示について
はじめまして。 JAVAサーブレットの勉強を始めたのですが、わからないことがあり、お伺いいたします。 BBSに投稿後の日時入れたいと思っているのですが上手く表示されません。 ソースが3つあり、 (1)拡張子jspのソース ここでBBSの投稿フォームおよび投稿後のフォームの呼び出し (2)拡張子javaのソース フォームから入力された内容の取得および「bean」へ登録 (3)拡張子javaのソース 投稿内容の値の保持および取り出し となっています。 私は下記のように追加したのですが、上手く表示させることが出来ませんでした。 (1) <%@ page import="java.util.Date" %> <% SimpleDateFormat formatter; Date date =new Date(); formatter = new SimpleDateFormat("yyyy年mm月dd日kk時mm分"); time = formatter.format(date); %> <input type="hidden" name="time" value= <%= "time">> <%= bean.getTime() %> (2) String time = request.getParameter("time"); bean.setTime(time); (3) private String mTime; public void setTime(String Time){ mTime = Time; } public String getTime(){ return mName; } 他に表示のさせ方があるのでしょうか。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- thamansa
- ベストアンサー率40% (95/232)
public String getTime(){ return mName; } となっていますが、mNameが定義されていないのでコンパイルできないはずです。 そうすると、JSPから呼んだのはgetTime()を作成する前にコンパイルされたクラスファイルなので、No3さんが指摘したように「BBSListBeanクラスにgetTime()なんてメソッドはないよ。」という結果になりそうな気がします。 No2で私が「JSPよりも投稿を受け付けた(2)のサーブレット側で・・・」と書いていますが、質問を見直すとJSPがひとつしかないので、この場合では的外れなアドバイスかもしれません。すみません。
- pcbeginner
- ベストアンサー率46% (261/560)
ページコンパイルのコンパイルエラーは beansパッケージのBBSListBeanクラスに getTime() なんてメソッドはないよ。 って意味ですよ。 (おそらくgetNow()→getTime()に修正したんでしょう。) 質問の(1)~(3)を見る限り、(3)にはいちおう getTime() が実装されているので、おそらく実行環境の サーブレット、bean、JSP で整合性が取れていないのではないでしょうか? 1度全部を最新版にしてみてはいかがでしょうか?
お礼
ありがとうございます。 サーブレット、bean、jspを最新版にして再度コンパイルしてみたいと思います。
- thamansa
- ベストアンサー率40% (95/232)
「上手く表示されません。」という部分をエラー画面になるとか、日付でないものが表示されるとか、コンパイルできないなど、もう少し具体的にお願いします。 ソースをみて気づいた点は <input type="hidden" name="time" value= <%= "time">> の行の<%= "time">の部分、がダメっぽいです。 正しくは <input type="hidden" name="time" value="<%= time%>"> ではないでしょうか。 それから、投稿フォームのJSPで現在時刻を取得していますが、JSPよりも投稿を受け付けた(2)のサーブレット側で Date date =new Date(); を行うほうが自然だと思います。
補足
thamansa様 具体的に書かず申し訳ありません。 下記のようなエラーがずっと出て、表示させる事が出来ませんでした。 サーブレット側で時刻の取得をさせるようにしてみましたが、やはり同じエラーになってしまいます。 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: /mainBBS.jsp の中の87行目でエラーが発生しました 生成されたサーブレットのエラーです: C:\BBS\work\org\apache\jsp\mainBBS_jsp.java:150: シンボルを解決できません。 シンボル: メソッド getTime () 場所 : beans.BBSListBean の クラス out.print( bean.getTime() ); ^(←このマークは実際にはgの下に表示されています。) 尚、<%= "time">>は単純に私がここに記載する時に書き間違えてしまいました。 大変失礼しました。 宜しくお願い致します。
- pcbeginner
- ベストアンサー率46% (261/560)
javadocに答えが書いてありますよ。 文字 日付または時刻のコンポーネント 表示 例 G 紀元 テキスト AD y 年 年 1996; 96 M 月 月 July; Jul; 07 w 年における週 数値 27 W 月における週 数値 2 D 年における日 数値 189 d 月における日 数値 10 F 月における曜日 数値 2 E 曜日 テキスト Tuesday; Tue a 午前/午後 テキスト PM H 一日における時 (0 ~ 23) 数値 0 k 一日における時 (1 ~ 24) 数値 24 K 午前/午後の時 (0 ~ 11) 数値 0 h 午前/午後の時 (1 ~ 12) 数値 12 m 分 数値 30 s 秒 数値 55 S ミリ秒 数値 978 z タイムゾーン 一般的なタイムゾーン Pacific Standard Time; PST; GMT-08:00 Z タイムゾーン RFC 822 タイムゾーン -0800 っていうことでいいのですよね?
補足
pcbeginner様 回答ありがとうございます。 私の記載ミスで大変申し訳ないのですが、実際には formatter = new SimpleDateFormat ("yyyy年MM月dd日kk時mm分") とソースには入れましたが、実際にコンパイルさせますと、下記のようなエラーが出てしまいます。 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: /mainBBS.jsp の中の95行目でエラーが発生しました 生成されたサーブレットのエラーです: C:\TRUST_BBS\work\org\apache\jsp\mainBBS_jsp.java:160: シンボルを解決できません。 シンボル: 変数 getNow 場所 : beans.BBSListBean の クラス out.print( bean.getNow ); ^(←この印は実際にはgの下にあります。) どうすればちゃんと表示させる事が出来ますでしょうか。 宜しくお願い致します。
お礼
ありがとうございます。 もう一度ソースのチェックをして再度、コンパイルをしたいと思います。