JavaでStrutsを使用してJSP画面のインクルードを行う場合について

このQ&Aのポイント
  • JavaでStrutsを使用してJSP画面のインクルードを行う際の注意点や修正方法について解説します。
  • インクルードディレクティブからインクルードアクションへの変更により、画面が表示されなくなる場合がある可能性があります。また、インクルードディレクティブを使用して呼んでいる先の画面から変数を取得する方法も紹介します。
  • インクルードディレクティブとインクルードアクションの違いについては、設定変更が必要な場合があります。それぞれの使い方と注意点について説明します。
回答を見る
  • ベストアンサー

JavaでStrutsを使用してJSP画面のインクルードを行う場合について

JavaでStrutsを使用してJSP画面のインクルードを行う場合について 改修を行いたい画面では現在、他の画面をインクルードディレクティブを使用して呼んでいます。 今回、呼んでいる先の表示項目が固定でなく、条件により変更されるように変更したいと思っています。 しかし、インクルードディレクティブを使用すると、呼んでいる先の画面の表示項目に変数を使用できないときいたため、以下の修正を行い、変更後の画面を見たところ、呼んでいる先の画面が表示されていませんでした。 ・インクルードアクションを使用して呼ぶように変更 (AAA.jspは呼んでいる先のJSP名)) 変更前 (<%@ include file="AAA.jsp"%> 変更後 <jsp:include page="AAA.jsp" flush="true"> <jsp:param name="count" value="<%= count1 %>" /> <jsp:param name="count" value="<%= count2 %>" /> </jsp:include> ※count1,count2は、JSP内で定義している変数が設定されています。 と、変数を2つ使用しています。 、画面にエラーメッセージは表示されないため、原因について、記述内容を考えたのですが、改修を行った画面と呼んでいる先の画面は、同一フォルダ内にあるため、問題ないと考えています。 インクルードディレクティブからインクルードアクションに変更したのみで、ページのインクルードができなくなることってあるのでしょうか? それとも、インクルードディレクティブとインクルードアクションの違いは <%@ include file="AAA.jsp"%> と <jsp:include page="AAA.jsp" flush="true" /> だけではなく、別のところでも設定変更が必要なのでしょうか? 素人な質問で申し訳ありませんが、 ・インクルードディレクティブからインクルードアクションに変更するときに画面が表示されなくなった理由 ・インクルードディレクティブを使用して、呼んでいる先の画面から変数を取得する方法 のどちらかがわかる方いらっしゃいましたら教えてください。 ちなみに、 <jsp:include file="AAA.jsp" flush="true" /> だったとか、そういうミスはしていません。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

参考になるかどうかわかりませんが、調べたところを報告します。 ・ 今回strutsは使っていません。 >>> ・インクルードディレクティブからインクルードアクションに変更するときに画面が表示されなくなった理由 これは、strutsの処理の仕方に原因があるかもしれません。 >>> ・インクルードディレクティブを使用して、呼んでいる先の画面から変数を取得する方法 これの対処法は、リクエスト属性を使う方法ではダメなのでしょうか。つまり <% request.setAttribute("db", "DBA1"); %> で渡して <%=request.getAttribute("db") %> で受け取る。 ---------------------------------------------------------- インクルードディレクティブ側とインクルードファイルの双方向 インクルードアクション側とインクルードファイルの双方向 ---------------------------------------------------------- いずれもうまく行くようだと私なりに確認しました。 (つまりオブジェクトは、普通に交換できる。) これは、 >>> インクルードディレクティブを使用すると、呼んでいる先の画面の表示項目に変数を使用できない の対処にも利用できるのではないでしょうか。 ・ 後ひとつ追加することがあります。(これもどこかで間違っているかもしれませんが。) それは、 「インクルードディレクティブの場合まさにソースコードを挿入した後に変換・コンパイルを行う。つまり、インクルードファイルのコードも同じメソッドで実行される。」 ということです。 この事により、 「インクルードファイルで宣言・代入した変数を、インクルードディレクティブでは宣言なしで使える。」 ということになります。 これは、まさに2番目の問いにぴったりです。 例として ---------------------------------------------------------- インクルードファイルに <%int inc=100; %> インクルードディレクティブ側に宣言をせずに <%=inc%> をコーディングします。 ---------------------------------------------------------- もちろん単独では、インクルードディレクティブ側は、エラーとなります。 ところがインクルードファイルに変数incが存在すれば微妙なタイミングで、OKのようです。 以上、役に立つかどうかわかりませんが、試してみていただければ幸いです。

nabetz
質問者

お礼

お返事遅れてすいません。 ご指摘の内容でやったところうまくいけました。 問題解決です。 どうもありがとうございました。

関連するQ&A

  • JSPのインクルードアクションについて

    AAA.jspというファイルの中で <jsp:include page="BBB.jsp" flush="true" /> とインクルードアクションでBBB.jspをインクルードしている個所があります。そのBBB.jspの中でresponse.addcookie()を使いたいのですが、正常に動作しません。不必要な個所は削除し、cookie発行の個所だけ残しても同じ結果です。JAVA初心者で改修を頼まれて困っています。漠然とした質問で申し訳ないのですが、どのような問題が考えられるでしょうか?宜しくお願い致します。

    • ベストアンサー
    • Java
  • JSPでimportを行う時の、変数の使用有無

    初めまして、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するファイル名を 変数で使用する方法はないものでしょうか? 過去ログにも見当たらなかった為、質問させていただきました。 よろしければご回答お願いいたします。 また、何かございましたらご指摘の程よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSPでのincludeについて

    JSPからincludeでperlを呼び出したのですが、 perlのファイル内で記載したスクリプトがそのまま文字列として表示されてしまいます。 なにか設定する必要があるのでしょうか。 コマンドから直接perlを実行した場合は期待する結果が返ってくることが確認できました。 --------------------------------------------- ■test.jsp // perlを呼び出し <jsp:include page="test.pl" flush="true"></jsp:include> ■test.pl #!/usr/bin/perl print $result; exit; ■test.jspで表示される結果 #!/usr/bin/perl print "aaaaaaaaaaaaaaaa"; exit; ■期待する結果 aaaaaaaaaaaaaaaa --------------------------------------------- よろしくお願いします。

  • 違いを教えてください

    JSPには、 ディレクティブ <% include file = "guide.jsp"%> と、 アクション <% jsp:include page = "guide.jsp" flush = "true" %> の二種類のインクルードがあるのは分かるのですが、 分かりやすくいうと、どのような用途によって使いわけるのですか? ディレクティブのほうは、DB CONNECTというような、 JSPファイルを読み込む時に一度実行すればいいというようなものを インクルードしており、 アクションのほうは、JSPファイルの<BODY>部で、guide.jspのなかのものを 必要な時に呼び出したりしているみたいです・・・・ 自分ではそのように解釈したのですが、明確な答えが、本などを調べてみても いまいちピンとこないので、簡単な言葉で使い分けの用途があるのか、 それとも、それ以外の理由で、インクルードの仕方が違うのか、 教えて頂きたいです。

    • ベストアンサー
    • Java
  • 【JSP】include時のパス設定について

    JSPでincludeしたいファイルがあるのですが、外部サーバーのためhttp://から設定したいのですがドキュメントルートからのパスとなってしまい、 以下エラーとなりうまく実行できません。 The requested resource (/service名/WEB-INF/jsp/admin/http://~) is not available 指定したいのは以下のように単純に『http://yahoo.co.jp』を読み込んでほしいのです。 <jsp:include page="http://yahoo.co.jp" flush="true"></jsp:include> サーバーの設定などで解決できるものでしょうか。

  • <Tomcat>存在しないJSPをインクルードした

    <Tomcat>存在しないJSPをインクルードしたときに 表示されるエラーを表示しないようにしたい かなり不可解な要求だとは思います。が、とある理由でこのような要求を必要としています。 Tomcatでは、存在していないJSPやHTMLを、<jsp:include>でインクルードすると、 The requested resource (/tw/store/haoki/include/miss.html) is not available といったエラーが画面に表示されてしまいます。 存在しないJSPなどをインクルードしたときでも、このエラーを画面に表示しないようにしたいです。 何か方法はありませんか?(できればTomcatの設定など、設定ですむようにしたいです。) あ、コーディングで回避する方法ならすでに調査済みです。 JSPファイルが1000を超えているため、コーディングで対応するというのは、できる限り回避したいのです。 Google使ってかなり調べてみましたが、方法は見当たりませんでした。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSPと異なるディレクトリのファイルのinclude

    相対パスで書かれている画像が含まれるHTMLファイルを、違うディレクトリに 置かれているJSPファイルからincludeした時に、画像が上手く表示されなく なってしまいます。これを上手く表示させる方法はありますでしょうか? 具体的な例を挙げて説明します。 [ディレクトリ構成] コンテキストパス--+--jsp-----index.jsp          |          +--html--+-index.html               |               +-fig1.png index.html内に <img src="fig1.png"> と表記 index.jsp内に <%@ include file="/html/index.html" %> あるいは <bean:include id="contents" page="/html/index.html" /> と表記 この場合 http://サーバ名/コンテキストパス/jsp/index.jsp にアクセスすると、fig1.pngは表示されません (/jspの下にないのですから当然といえば当然ですが)。 index.htmlファイルにはできるだけ手を加えたくありません。 このような条件で、fig1.pngを上手く表示させる方法はありますでしょうか?

  • Java struts Formを分ける

    Java Struts1.3.10 1jspにつき1Formとし、A.jspからB.jspへ遷移させようと思っています。 しかしA.jspは正常に表示されるのですが、遷移後エラーが発生します。 Bean AForm のプロパティ AList に対するゲッターメソッドがありません 遷移後に見てほしいのはBFormなのですが、AFormを見てしまっています。 どのようにすればBFormを参照することができますでしょうか? struts-config.xml <action attribute="AForm" input="/pages/A.jsp" name="AForm" path="/Result" type="jp.co.elephan.rental.action.Aaction" scope="session" validate="true" parameter="insert"> <forward name="Result" path="/pages/B.jsp" /> <forward name="Return" path="/pages/A.jsp" /> </action> <!-- --> <action attribute="BForm" input="/pages/B.jsp" name="BForm" path="/Return" type="jp.co.elephan.rental.action.Baction" scope="session" validate="true" parameter="yes,no"> <forward name="Result" path="/pages/A.jsp" /> <forward name="Return" path="/pages/B.jsp" /> </action> 以上です。

    • ベストアンサー
    • Java
  • JSPでincludeファイルの日本語が文字化けします。

    tomcat3.1を使用しています。 JSP本体でcharset=Shift_JISを設定し、SJISコードで記述した文字は正常に表示されますが、 <%@ include file="file.html" %>にて読み込んだfile.htmlに記述した日本語が文字化けします。 file.htmlが文字化けしないようにする方法を教えてください。

  • Struts + Ajaxで画面更新

    お世話になります。 javascriptかJavaか迷ったのですが、こちらに投稿させていただきます。 もしカテゴリ違いなら申し訳ありません。 Strutsを使用しているのですが、Ajaxで画面遷移を行わずに画面の更新をしたいと思っています。 JSP内のincludeで読み込んでいるHTMLを更新したいです。 jqueryのpostメソッドでアクションを呼び出して更新データの取得などの処理までは行えたんですが、その後画面を更新する方法がよくわかりません。 例などを見ると、javascriptでタグなどをappendしたりして更新するのが多いのですがそれだと複雑なテーブルだったりアクションで取得して格納したbeanのデータを利用したいなどが難しそうなので、 バックグラウンドで行った後別のHTMLに表示してそれをincludeとかで更新できたらと思っているのですが無理なのでしょうか? もし無理ならそういう場合はどのように処理を行うのがよいのでしょうか。 意図がよくつかめない質問になり申しわけありませんが、回答よろしくお願いいたします。

    • ベストアンサー
    • Java