- PR -

タグファイルについて

1
投稿者投稿内容
naito
常連さん
会議室デビュー日: 2007/08/07
投稿数: 36
投稿日時: 2007-10-04 12:42
こんにちは。


現在、タグファイルのコードの追加と変更を行っているのですが、JSPファイルではスクリプトレットを多く使用していたのですが、タグファイルではスクリプトレットは使用できないのでしょうか?

是非御教授お願いいたします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-10-04 14:40
引用:

naitoさんの書き込み (2007-10-04 12:42) より:
タグファイルではスクリプトレットは使用できないのでしょうか?



試した結果、できなかったのですか?
スクリプトレットを使ったタグファイルのサンプルなどは検索をかけると
見つかるわけですが、使用できないと考える理由はなんですか?
naito
常連さん
会議室デビュー日: 2007/08/07
投稿数: 36
投稿日時: 2007-10-04 15:39
nagise様、御返答ありがとうございます。


現在、タグファイルの中で追加したいことは、現在の時刻をInt型で変数に格納したいのですが、その部分をスクリプトレットで書くために、タグファイルの中でjava.util.Calendarをインポートし、Calendarクラスを用いて、現在時刻を取得できるように以下のようなコードを追加しました。

<%@page import="java.util.Calendar"%>
<%
Calendar cal = Calendar.getInstance();
String yyyy = Integer.toString(cal.get(Calendar.YEAR));
String mm = Integer.toString(cal.get(Calendar.MONTH)+1);
String dd = Integer.toString(cal.get(Calendar.DATE));

String time = yyyy+mm+dd;
int nowtime = Integer.parseInt(time);
%>

しかし、class java.lang.RuntimeExceptionのエラーでうまく動作しませんでした。

現在その時点で止まっているところです。

曖昧で申し訳ありませんでした。
vlkr
会議室デビュー日: 2005/12/02
投稿数: 6
投稿日時: 2007-10-04 15:57
そのソースそのままだとすると、
RuntimeExceptionというよりはタグファイルのコンパイルエラーが出る気がするのですが。

インポートの宣言をする際、
タグファイル中では@pageディレクティブは使用できません。
変わりに@tagディレクティブを使用します。
naito
常連さん
会議室デビュー日: 2007/08/07
投稿数: 36
投稿日時: 2007-10-04 16:05
vlkr様、御返答ありがとうございます。


修正しましたところ、無事うまくコンパイルされました。
ありがとうございました。

初心者なので、コードを追いかけながら作成しているのですが、例えば上記のコードで格納した変数nowtimeには、スクリプトレットを閉じた後、そのファイル内で使用するためには、EL式で使用できるんでしょうか?

${nowtime}では何も出力できなかったので。
vlkr
会議室デビュー日: 2005/12/02
投稿数: 6
投稿日時: 2007-10-04 16:50
EL式は、指定された名前のオブジェクトを
1.pageスコープ
2.requestスコープ
3.sessionスコープ
4.applicationスコープ
の順で検索していきます。

今回の場合、nowtimeは単にスクリプトレットの中でのローカル変数として宣言されただけで
上記のどのスコープにも属しません。

とりあえず、
pageContext.setAttribute("nowtime", new Integer(nowtime));
などとしておけば、EL式からも見えるようになると思います。

※余談
確か、逆のパターンで
jsp:useBeanタグやStrutsのbean:defineタグなんかを使ってpageスコープに変数を宣言した場合
ローカル変数とpageContextの両方に宣言されたような気がします。
不確かな記憶の為、違ってるかも。
(ここ最近スクリプトレットはさっぱり使用してないので・・)
naito
常連さん
会議室デビュー日: 2007/08/07
投稿数: 36
投稿日時: 2007-10-04 17:27
vlkr様、御早い返事どうもありがとうございます。


勉強になりました。
つまりpageContext.setAttributeでページスコープの属性にオブジェクトを格納し、EL式で見れるようにするという解釈でよろしいでしょうか?

jsp:useBeanタグやStrutsのbean:defineタグに関しても調べておこうと思います。
どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)