• 締切済み

JSPでの変数定義

以下のようなJSPが2つあった場合にeclipseではTest2がエラーとなってしまいます。(Test2では変数Xが何者か判断できないため) なお実行時には変数の値が参照できるため通常に動作しますが、Test2でもTest1の1、2の記述をする必要があるのでしょうか? Test1.jsp  1.useBeanでBeanAを使用  2.BeanA.getValue()の値を変数にXに設定  3.Test2.jspのインクルード  4.変数Xの値を使用した処理 Test2.jsp  変数Xの値を使用した処理

みんなの回答

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

静的インクルードされる対象の JSP ファイルであっても、 開発環境上では単体でコンパイルされてしまうので、 ファイル内で宣言していない変数を使用するとエラーになります。 インクルード専用のJSPは拡張子を変えてJSPに見せないとか、 個別にコンパイル対象外に指定するとか、 対策としてはいろいろありますが... そもそもこの様な状態は、JSP同士が密結合してしまうので、 今後のメンテナンスを考えるとよろしくありません。 JSP間の値の受け渡しは、変数ではなくbeanで行うことをオススメします。

関連するQ&A

  • JSPの変数受け渡しについて教えてください。

    index.jspファイルにinclude.jspをインクルードします。 そのときにindex.jsp内の変数にアクセスしたいのですがどのように行えばよろしいでしょうか。(index.jsp内の変数の値を変えたい) ■index.jsp <% String hensu = "aaa"; %> <jsp:include include.jsp /> <html> <body> <%= hensu %> </body> </html> ↑この時点でinclude.jspによって代入された値が bbb に変化して表示されればよいのですが・・・。 ■include.jsp <% String hensu = "bbb"; %> この方法が無理であれば、beanを使用しようと考えていますが、なるべくjspで実現したいと思っています。 まったくの初心者で申し訳ないですが誰かお助けお願いします。

    • ベストアンサー
    • Java
  • JSP内で関数定義 EJB変数の参照

    いつもお世話になっています。 JSPの中に <%! ~ %> を使って、関数(function)を作ったのですが、それに、同JSPページ内で宣言したEJBがあるのですが、そのオブジェクトをfunction内で使おうとすると、宣言されていませんエラーが出てしまいます。JSPが内部でどのようなJavaとしてコンパイルされるかよく分からないのですが、 パラメータとして渡す以外に、functionの中でJSP内で宣言した、EJBを使うことは出来るのでしょうか。 ご存じの方が居ましたらよろしくお願いします。 記述例(こんな感じで使いたいです) <jsp:useBean id="testBean"      class="xxx.xxx.testBean"      scope="page">      <jsp:setProperty name="testBean"           property="testProperty"           value="test" /> </jsp:useBean> <%! private String testFunction(boolean booleanExpression) {      return(booleanExpression ? testBean.value() : " "); } %>

  • 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でsession変数が勝手に書き換えられる

    お世話になっています。 JSPを使ってプログラミングをしていますが、画面遷移の途中でsession変数の内容が空になってしまう現象に悩まされています。 画面遷移は、 ■入力画面 <jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" /> ↓post ■確認画面(ここで、前の画面で入力された値をsessionに保存) <jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" /> ↓post ■申し込み完了画面(入力された値をDBに保存) <jsp:useBean id="apply" scope="session" class="apply.Apply2009Bean" /> ここで、申し込み完了画面になるとapplyという変数の中が全部nullになっています。 念のため暗黙のsession変数からgetId()でセッションIDを画面に出してみると<%=session.getId()%> 申し込み画面:585C94623773F49C0708E050C95E20D2 確認画面:5C35DCF1B68850A762D531CAF2F9700E 完了画面:7D1035FD035C7767C8CEB1D938325D60 と、毎回セッションIDが変わっています。  ちなみに、テスト環境ではこの問題は起こらず、本番環境のみで発生します。  同様の問題を経験したことがあるかたはいらっしゃいませんでしょうか。 構成は ■テスト環境: os:WindowsXP SP2 server:Tomcat 4.1 Java: 1.4.2 ■本番環境: os:FreeBSD 6.1-RELEASE-p6 server:Tomcat 4.1 Java: 1.4.2  よろしくお願いいたします。

    • ベストアンサー
    • Java
  • include先でのinclude元の変数について

    度々お世話になっています。 include先でのinclude元の変数の扱いについて疑問に思ったので質問させて下さい。 include元ファイルtest.php include先ファイルinclude.phpとしてtest.php内の変数をinclude.phpに渡したいと考え以下のコードを書きました。 test.php <?php $test = "いけるかな?"; include "include.php"; ?> include.php <?php echo $test; ?> 結果、$testの値を表示する事が出来なかったのですが、$testの値を表示するためにはどのような記述方法があるのでしょうか? また、このような動作を期待している理由としてはPHP部分とHTMLを分離させたいと考えており、ユーザ定義関数に変数を引数として渡して、出力処理をユーザ定義関数内で行うという事も考えたのですが、include先に値を渡す事が出来れば、非常にわかりやすく分離出来ると考えたからです。 他に、PHP部分とHTML部分をファイル分けするやり方などありましたら教えて頂けますとうれしいです。

    • ベストアンサー
    • PHP
  • php 変数(変数名)の結合について。

    php 変数(変数名)の結合について。 こんばんは。 phpでホームページを作成しておりますが どうも上手く動かないのでこちらに質問させて頂きました。 変数名$testに数字を連番で付け、 $test0 = (値1,値2,値3,・・・) $test1 = (値1,値2,値3,・・・) $test2 = (値1,値2,値3,・・・) と各変数に配列を代入したいと考えています。 そこで、for文を使用し、 for($i=0; $i<10; $++) {  $test.$i = (値1,値2,値3,・・・) } と記述た所、上手く動作せずに困っております。 二次元配列での代入は可能だと思いますが $test[0] = (値1,値2,値3,・・・) $test[1] = (値1,値2,値3,・・・) $test[2] = (値1,値2,値3,・・・) for($i=0; $i<10; $++) {  $test[$i] = (値1,値2,値3,・・・) } ※ 実験してませんけど・・・。 なるべく二次元は使わないで処理したく思いますが やはり二次元配列のが合理的でしょうか・・・。 その点も踏まえ、何方かご教授頂ければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • JSP内での不思議な挙動

    現在、webアプリを作成(Springフレームワークを使用)していてJSPにて不思議な 挙動を起こしたので質問させてください。 要点としては<img src="/Test/">(Testはrequest.getContextPathにて取得) というタグがJSP内にあった場合、何か特別な挙動を起こすのかということです。 以下に詳細を記述します。 JSP内に以下のようなimgタグが生成されることを期待してJSPを作成しました。 <img src="/Test/img/xxx.jpg"> (img/xxx.jpgの部分は変数で記述。Testの部分もrequest.getContextPathにて取得) しかし、バグで変数から値が受け取れず <img src="/Test/">という形式のimgタグが生成されてしまいました。 問題はここからでこの状態で画面上にあるボタン(次画面遷移)を押下してPOSTされた場合、 ログイン画面に遷移してしまいました。(インターセプター内でログイン情報が取得できなければ ログイン画面に遷移するように記述されているため) ところが直書きにて<img src="/Test/aaaa">などとTestの後ろに適当な値のタグを 作成し、ボタン(次画面遷移)を押下すると正常に次画面に遷移しました。 imgタグの画像のURLがTest(Webアプリ名)だけだと何か特別な動作をしてしまうものなので しょうか。

    • ベストアンサー
    • Java
  • JSPのメソッドサイズ制限について

    JSPを初めたばかりで、基本的なこともよくわからなくてどなたかお教え願えないでしょうか Eclipseを操作しながら作成しています 今回複雑な計算処理のJSP(form文のactionで実行)で作成する予定で、メソッドが64Kバイトを超えることが想定されます JSPでは、64K バイトを超えるサイズのメソッドの生成出来ない記載と、 jspのメソッドの行数が,コメントおよび空行を含めて1000行を超える場合が発生する記載を見つけました 下記対策が有るようですが、jspではどの方法とるのがよいかですか   1.jspのスリム化には     (a)コメント、スペース、改行を減らす     (b)動的includeを使用して分割する        変数の引き渡しが必要で単純に分割出来ない     (c)beanで処理できる部分を作成        Eclipseでの作成方法の手順があるとたすかります (d)<%! function(){} %>別メソッドを作成        この方法は正しいかわかりません   2.jspでなくてservletで作成する        

    • ベストアンサー
    • Java
  • 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
  • JSPでHashMap・配列の変数の値を扱う方法について

    サーブレット側でHashMap型の「map」に値をセットしてしています。 mapは配列となっています。 ■サーブレット -------------------------------------- HashMap map[] = new HashMap[10];  ・・省略・・ getRequest().setAttribute("map",map) -------------------------------------- 上記でセットした値をJSP側で値を参照したいと思っているのですが、 HashMap・配列の値をJSP側でどのように読み込む/記述したら良いのか 分かりません。 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう