- - PR -
include を for文内で作成
1|2|3
次のページへ»
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-05-07 13:03
Java,JSP初心者です。
<%@ include%>を使用して、 幾つかのファイルをインクルードしたいのですが、 条件に応じてインクルードしたいファイル数が 変えられるものを作ろうと思っています。 一応↓こんな感じをイメージしているのですが、 エラーがでてしまい、やり方がよくわからなくて困っています。 根本的に間違っているのでしょうか? ------------------------------------------------------- <% for(int i = 0; i < fileName.length; i++) { if(fileName[i] != "") { %> <%@ include file=fileName[i] %> <% } } %> ------------------------------------------------------- 初歩的な質問で申し訳ございません。 どなたかご教授いただけると幸いです! よろしくお願いします。 | ||||||||
|
投稿日時: 2003-05-07 14:49
どういうエラーが出ますか?
インクルードされるファイルでも pageディレクティブでcontentTypeを指定しているとか? | ||||||||
|
投稿日時: 2003-05-07 14:52
それが出来ると一見便利そうですが・・・。
まずは出力されているエラーを提示してください。 本来出力されるページの制御はサーブレット側で選択するべきですので、 基本的なロジックを見直すようにしてください。 また、次のステップ(?)としてjakartaのtaglibを使うことをお勧めします。 | ||||||||
|
投稿日時: 2003-05-07 15:53
<%@include%>って、静的インクルード(jsp -> java変換時に取り込んでコンパイルされる)だから、動的にインクルードしたりしなかったりってのは無理では?
<jsp:include>にするか、最初から全部静的インクルードしてしまって、表示する/しないを動的に変えるかのどちらかしかないと思いますが。 #個人的には、zaxx_MDのいうように、taglibがお勧めです | ||||||||
|
投稿日時: 2003-05-07 19:58
皆様、お返事ありがとうございます!
>どういうエラーが出ますか? エラーは次のようなものが出ています。 エラー文言:「JSP ファイル "./funcModule/" が見つかりません」 以下のようにinclude文だけを単独で実行すると成功するのでファイルが 存在しないとかいった単純ミスではなさそうなんです。 実行できたプログラム:<%@ include file="./funcModule/" + fileName[0] %> >インクルードされるファイルでも >pageディレクティブでcontentTypeを指定しているとか? page記述はしていません。 次のようなJSPプログラムの一部を記述してあるだけです。 で、ファイル名には拡張子をつけていません。 <% out.println("someMoji"); %> >出力されるページの制御はサーブレット側で選択するべき ??ひょっとしてJSPでやろうとしている時点で根本的に間違っているのでしょうか? 以下のようなことがやりたいだけなんですが。。。これはサーブレットでするべきなんですか? 1 ->HTML(formのparamをpost) 2 ->JSPでparamを受け取り内容によって出力するHTMLを一部変換 3 ->HTML出力 とりあえず、t-waveさんに提案いただいた<jsp:include>で試してみて、 だめなら次にtablibを使ってみます。ところでtaglibですが、こういった場合は どのようなものが提供されているのでしょうか? すいません初心者すぎてっ。。。汗; | ||||||||
|
投稿日時: 2003-05-07 23:11
>エラーは次のようなものが出ています。
>エラー文言:「JSP ファイル "./funcModule/" が見つかりません」 >実行できたプログラム:<%@ include file="./funcModule/" + fileName[0] %> fileNameという配列に、NULLか""が混じっているのでは? とりあえずfor文の中で途中経過を出力してみるといいかも。 サーブレットですべきかどうかは、規模や要件によると 思います。 そのへんはMVCとかMVCモデル2といったキーワードを 調べるとよいと思います。 あとは、 <jsp:include>と、<@include> の違いとか。 タグライブラリは補完的にしか使ったことがないので 何とも。便利だなとは思いました。 | ||||||||
|
投稿日時: 2003-05-08 11:31
変だと思います。amnakyさんのおっしゃる通りです。
JSPに関しては昔からあるJSP "Tiny Samples"というページがお気に入りなのですが、 >><%@ inlude 〜 %>の方は、JSPファイルの初回起動時に読み込まれます。 と書いてあります。 ということは実行時にfileName[0]に値が入っていたとしても ページ構成の初期処理ではfileName[0]にはデータが入っていないと思われるので ロジックでどうがんばっても、結果は変わらないと思います。 | ||||||||
|
投稿日時: 2003-05-08 13:58
皆様、色々ご教授くださりありがとうございます。
<jsp:include>の使用で 'なんとか' 思い通りの実行が出来ました! ソース-------------------------------------------- <% for ( int i = 0; i < fileName.length; i++) { if(fileName[i] != "") { %> <jsp:include page="<%= fileName[i]%>" flush="true" /> <% } } %> -------------------------------------------- 結局、皆さんのご指摘のように <%@ include%><jsp:include />の処理手順の違いが原因でした。 ほんと勉強不足でした。汗; 最後に、 スレッドのタイトルから少しずれる質問で申し訳ないのですが、 <jsp:include />のpage属性のsyntaxについて fileName[i]の対象ファイルをサブフォルダに入れようと 以下のような書き方に変えると、エラーも出ずに無反応になります。 ソース-------------------------------------------- <jsp:include page="./funcModule/ + <%= fileName[i]%>" flush="true" /> -------------------------------------------- ちなみに、「無反応」というのは正常にHTMLが表示されているのですが、 どーも、include文のところだけ無視されているような感じなのです。 あと、これさえ出来ればとりあえず完成なのですが。。 <jsp:include>を色々調べていたらSunのサイトでSyntaxの説明があったのですが、 次のようになっていました。 Syntax-------------------------------------------- <jsp:include page="{relativeURL | <%= expression %>}" flush="true" /> -------------------------------------------- これはつまるところ、 relativeURL か <%= expression %> のどちらかを使え、ということであって relativeURL と <%= expression %> は併用できないってことなんでしょうか? すいません。Syntaxもよく読めないんです。 relativeURL と <%= expression %>の併用をされた例とかお持ちでしたら ご教授ください。 Sunのさいと:http://java.sun.com/products/jsp/syntax/1.1/syntaxref1112.html すいません。また、長々と書いてしまいました。 | ||||||||
1|2|3
次のページへ»
