
初めまして、etsuki_genと申します。
こちらの掲示板ではいつもお世話になっております。
初の質問です。よろしくお願いいたします。
サーブレットとJSPを使用して現在仕事をしております。
サーブレットのコード内でjspファイルを指定し、
JSPにて出力したいと考えております。
詳細は以下に記述させていただきました。
【詳細】
■現在のJSPでのimport方法↓
<%@include file="aaa.jsp"%>
上記の"aaa.jsp"の部分を変数に変更し、
以下のように記述したい。
■変更したいimport方法↓
サーブレット側
a.putData("javaData","aaa.jsp");
JSP側
<% String strData=a.getData("javaData");%>
<%@include file=strData%>
変数を指定して、インクルードをしようとすると
「引用符が必要です」とエラー表記されてしまいます。
また、
<%@include file="<%=strData%>"%>
と記述しても、「<%=strData%>ファイルが見当たりません」と言われてしまいます。
JSPでimportを行う時に、importするファイル名を
変数で使用する方法はないものでしょうか?
過去ログにも見当たらなかった為、質問させていただきました。
よろしければご回答お願いいたします。
また、何かございましたらご指摘の程よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
まず最初に#2の参考URL読みました?
それから#3の変換されたサーブレットの中身を見ました?
#3の補足を見る限りではサイトを見た、中身を見たということが感じられないのですが…。
小言は置いておいて
エラー内容からさっするに…
たんにJSPの記述ミスだと思われるのですが…
自分が試したJSPだと「引用符がどうの」というメッセージは表示されませんでした。
<body>タグの中に書いています。
で「動的にインクルード先を変えること」についてですが、結論から言うとできました。
インクルードするJSP名をセットしたHashMapを
「リクエストに格納」
してたのですが、これだとJSPではリクエストから格納されたHashMapを取得できませんでした。
(nullが返ってくる)
次に
「セッションに格納」
してみました。これだとJSPでセッションから格納されたHashMapを取得できました。
なんでリクエストじゃだめなのかが不明なので、気持ち悪いですが、とりあえず、サンプルを載せておきます。
(もしかしたらお作法的によい方法じゃないかもしれません。)
サーブレット
HashMap map = new HashMap();
map.put("jspname","include2.jsp");
req.getSession().setAttribute("map",map);
JSP
<%
HashMap map = (HashMap)(request.getSession()).getAttribute("map");
String jspname = "";
if(map != null){
jspname = (String)map.get("jspname");
}
%>
<jsp:include page="<%=jspname%>" flush="true" />
詳細な説明をありがとうございます。
変換されたサーブレットですが、変換される前に落ちてしまうため見ることができませんでした。
また、#2の参考URLは読ませていただいてます。
自分の理解不足、詳細不足より、小言を言われてしまっても仕方ないと思います。
セッションは、ご教授いただいて申し訳ないのですが、
仕事の関係上使用できないのです・・・。
また時間の関係上、今回はhtmlファイルにて行うことにさせていただきました。
ここまでお付き合いいただき、ありがとうございました!
今回ご教授いただいた内容は、今後生かしていきたいと思います。
No.3
- 回答日時:
調べてはみたのですが…
どうも分からず…
エラーはページコンパイルで出ていますか?
そうであればjspから変換されたjavaファイルの中身を見てみるのもいいかと思います。
この回答への補足
わざわざ調べていただきありがとうございます。(><)
エラーは以下のようになっておりました。
doForward : javax.servlet.ServletException Error in JSP : /jsp/home.jsp
org.apache.jasper.JasperException: /jsp/home.jsp(96,19) 引用符が必要です
※home.jspとは、aaa.jspを呼び出すjspファイルです。
質問させていただいたimportは<body>~</body>タグの中に記述してあります。それが原因とは思えないのですが・・・。
尚、htmlファイルだと正常にimportされるので、もしかしたらjspファイルは<body>~</body>タグの中の記述だと読み込めないのでしょうか?
No.2
- 回答日時:
インクルードディレクティブを使用すると、
JSPをサーブレットに変換する前に、
インクルードするファイルを読みに行きます。
ですので
<% String strData=a.getData("javaData");%>
<%@include file=strData%>
としても、
<%@include file=strData%>
↑で実際にインクルードするのはサーブレットの変換前、つまりページコンパイルもサーブレットが実行もされてもいないので、
<% String strData=a.getData("javaData");%>
↑の部分は実行されいません。
ですので、strDataというファイルがありませんよ。
となってしまうのです。
なぜインクルードするファイルを変数にしたいのか?
ということに対しての答えが
「インクルードするファイルを動的に変えたいから」
ということなら
インクルードアクション(<jsp:include>)
を使用してはいかがでしょうか?
参考URLにインクルードディレクティブとインクルードアクションの違いが載っています。
途中の図を見る限り動的にインクルードできると思います。
(試していないので間違っているかもしれません。)
参考URL:http://www.atmarkit.co.jp/fjava/rensai/jsp05/jsp …
この回答への補足
早速のご回答ありがとうございます。
>なぜインクルードするファイルを変数にしたいのか?
>ということに対しての答えが
>「インクルードするファイルを動的に変えたいから」
>ということなら
>インクルードアクション(<jsp:include>)
>を使用してはいかがでしょうか?
まさにその通りなのです!
そこで、いただいた回答を元に下記のように行ってみたのですが、「引用符が必要です」と言われてしまい、正常に動作いたしませんでした。
<jsp:include page="<%=cstrData%>" flush="true" />
もし、間違い等ございましたらご指摘願えませんでしょうか?

No.1
- 回答日時:
実際に試してないのでヒント程度ですが・・。
ちょっとベタな方法ですが、
<%
if (××){
%>
<%@include ・・>
<%
} else {
%>
<%@include ・・>
<%
}
%>
みたいな形で変更するわけにはいきませんか?
後は、<jsp:include>でもダメでしょうか。
あるいは、式言語を使って、page="${××}"という形でもだめでしょうか。
・・ぱっと思いつくのはそれぐらいでしょうか。
ご回答ありがとうございます。
返信が遅くなり、申し訳ございません。
Kyon2_PaPaさんのいう「ベタ」な方法は以前使用していた
やり方です。(汗)
現在ファイルの種類が多くなってしまったため、
動的にインクルードする方法を探していました。
>後は、<jsp:include>でもダメでしょうか
こちらは試してみたのですがうまくいきませんでした。jspファイルを読み込めないようです。
もう少し考えてみます。教えてくださりありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- バックアップ ファイル履歴を使用してバックアップよりハードディスクドライブに保存した方良いですか? 3 2022/09/29 22:31
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- 工学 Pythonの3次元描画に関する質問です 3 2022/12/07 20:07
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Windows 10 WIN10(MAC-bootcamp)で 起動時のパスWが どうにもならない 2 2023/06/30 11:40
- Windows 10 ビデオカードが変更されたPCの復元 1 2022/11/29 02:01
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPからJSPへ情報を渡せる?
-
webアプリを作ってます。エラー...
-
JSPのエラー画面(error.jsp)に...
-
JSPの実行について
-
Java サーブレット間の値の受渡...
-
jsp:paramアクションタグで配列...
-
jspからServletを呼び、元のjsp...
-
JSPのエラー。
-
1つのフォーム内容を1つのsubmi...
-
javascriptでformの送信後、値...
-
Tomcatの仮想ディレクトリ配置...
-
strutsでフレームの分割ができ...
-
weblogicで開発するにはwarファ...
-
jspのクラスのコンパイルエラー
-
jspでbeanを使いたいのです...
-
三菱GOTの画面切り替えについて
-
ボタンが活性化の場合とは、ボ...
-
strutsを使用したjspでjavascri...
-
EXCEL VBAで、EXCELの入力規則...
-
リクエストに応じたselectedの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jspからServletを呼び、元のjsp...
-
JSPからJSPへ情報を渡せる?
-
webアプリを作ってます。エラー...
-
JSPのエラー画面(error.jsp)に...
-
javascriptでformの送信後、値...
-
jspでbeanを使いたいのです...
-
JSPの値により遷移先を変更する
-
WEB-INF直下のフォルダ
-
1つのフォーム内容を1つのsubmi...
-
Struts:フレーム内JSPからcssフ...
-
JSPでimportを行う時の、変数の...
-
JSPの変数受け渡しについて教え...
-
TOMCATで\\webapps\\ROOTフォル...
-
Tomcatの仮想ディレクトリ配置...
-
[JSP]1Servletから複数フレーム...
-
Servlet-JSP間のhidden要素での...
-
jsp:paramアクションタグで配列...
-
Seaser2のフォルダ構成について
-
jspからjarを参照したいのですが
-
JSPのインクルードアクションに...
おすすめ情報