• 締切済み

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() : " "); } %>

noname#2494
noname#2494
  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

  • mrt136
  • ベストアンサー率35% (33/92)
回答No.1

EJB のソースも載せないと、何が悪いのかが分かりづらいかとおもいますが?

noname#2494
質問者

補足

遅れてすみませんでした。 あのEJB側は、他人が作った物で、かってに載せるわけには行かないので、自分で作ってみました。 スコープの関係だと思い、仕様上出来ないのか、それとも代替策があるのかと思い、コードを載せなくても大丈夫だと思っていました。すみませんでした。 中身を見てみると、反対側はEJBを継承していない様なので、それと同じような感じで作ってみました。 JSP側 <html> <body> <jsp:useBean id="zzzz" class="xxx.yyy.ui.zzzz" scope="page"> </jsp:useBean> <%! void showMessage() { out.println("---" + HiroTest.show()); } %> <%= HiroTest.show() %><br> ---<br> <% showMessge(); %> </body> </html> Java側 package xxx.yyy.ui; import java.util.*; import java.io.*; import java.util.Vector; import java.beans.*; public class zzzz{ public String show() { return("hello"); } } このようにすると、後ろの直接 <%= HiroTest.show() %><br> としたところに関しては正常にhelloが表示されますが、 <% showMessge(); %> 関数を呼び出すと、シンボルが解析出来ませんエラーが発生してしまいます。 このzzzzオブジェクトを関数の中で呼び出すことが出来る物なのでしょうか。

関連するQ&A

  • jsp から servlet に

    パラメータをJSPからServlet に渡す所で、どうしても、null になってしまします‥。 主要な部分だけ書きます。 --jsp-- <jsp:useBean id="beanId" class="Bean" scope="request" /> <form method="POST" action="servlet"> <input type="submit" value="送信"> <input type="text" size="10" name="name"> --servlet-- import Bean; Bean bean = (Bean)request.getAttribute( "beanId" ); // ↑ここが、nullになってしまう。 --Bean-- public String getName() { return name; } public void setName( String name ) { this.name = name; } 考え方が違ってるかも知れないのですが‥。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Bean→JSPでの文字化け

    こんにちは。 質問したいことがあります。 JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。 文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に 発生します。 ----------------------例---------------------------------------- <jsp:useBean id="tBean" scope="session" class="test.testBean" /> <p>運勢は <em><%= tBean.getUnsei() %></em> です!</p> ------------------------------------------------------------------ ※getUnsei()はBean内で定義された全角文字を取得するメソッドで、このメソッドで取得した文字列が文字化け(?が多数出力される)します。ちなみに「運勢は」と「です!」という文字列は、そのまま文字化けせずに出力されます。 どう対処してよいか全く分かりません。 もし何か分かることがありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • JSPのエラー。

    以下のjspファイルでコンパイルエラーが出ます。 これはログインの処理の二つ目のjspファイルで、一つ目のファイルではhtmlのフォームで、このファイルにpostしています。 mディレクトリにuserクラスを作ってあり、loginメソッドで成功すればtrueが返ってきます。 ブラウザに表示されるエラーの一行目は org.apache.jasper.JasperException: /login2.jsp(3,27) &lt;jsp:useBean タグが終了していません と表示されます。 よろしくお願いします。 <%@page contentType="text/html;charset=Windows-31J"%> <%@page import="m.user,javax.sql.*,java.sql.*"%> <jsp:useBean class="m.user" id="user" scope="session"/> <html> <head><title>ログイン</title></head> <body> <% String strLoginName = request.getParameter("login_name");/*フォームからの受け取り*/ String strPassword = request.getParameter("password"); String strResult; boolean blResult = user.login(strLoginName,strPassword); if(blResult){ strResult = "ログインしました。"; }else{ strResult = "失敗です。"; }%> <%=strResult%> </body> </html>

    • ベストアンサー
    • 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
  • JSP jsp:usebean で総称型クラスを使うには

    お世話になります。 JSPでプログラムを書いています。 そこでjsp:usebeanを使っているのですが、そのクラスに以下のように総称型クラスを使用したいのです。 > <%@page import="java.util.Vector"%> > <jsp:useBean id="vec" scope="application" class="java.util.Vector<String>"/> で、warファイルまではできるのですが、実行するとブラウザ上に以下のようなエラーが表示されます。 > org.apache.jasper.JasperException: /index.jsp(4,0) useBeanのクラス属性 java.util.Vector<String> の値が無効です > org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40) > org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) > org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148) > org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1178) JSPのbeanには総称型クラスを使うことができないのでしょうか。 環境は以下の通りです。 サーバー:Tomcat 5.5.27 jdk: 1.6.0_07 特別なコンパイルオプションなどは指定していません。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSPからJavaクラスを参照できない?

    サーブレットを勉強しています。Eclipseを使っています。 WEB-INF/src/m/to_do.java view/list.jsp というファイルがあるのですが、list.jspの中でto_doクラスを使いたいので、 <%@ page import="java.util.ArrayList" %> <%@ page import="m.to_do" %> <jsp:useBean id="list"scope="application"type="java.util.ArrayList<to_do>" /> と記述したのですが、java.util.ArrayList<to_do>のところで、 未定義型:to_do と出て、エラーが出てしまいます。 このJSPの中で、 to_do.getID(); など、to_doクラスのメソッドを呼び出す記述を書いても、やはりto_doを認識していないようです。 どうすれば、to_doクラスを読み込ませられるのでしょうか?

    • ベストアンサー
    • Java
  • jspから別のjspへパラメータが送信できない

    javaBeanを利用してjspを作成したけど Test.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <jsp:setProperty name="formprocess" property="*"/> <html> <head> <title>TEST</title> </head> <h2>情報の入力</h2> <form method="GET" action="/javaroad/jspdir/Test_1.jsp"> <p> 名前: <input type="text" name="name" size=30> <p> メールアドレス: <input type="text" name="mailaddress" size=30> <p> <input type="submit" value="送信"> </form> </center> </body> </html> Test_1.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <html> <head> <title>TEST</title> </head> <body> <p> 名前: <jsp:getProperty name="formprocess" property="name"/> <p> メールアドレス: <jsp:getProperty name="formprocess" property="mailaddress"/> </body> </html> Beanのソース package struts; public class FormProcess { String name; String mailaddress; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setMailaddress(String mailaddress) { this.mailaddress = mailaddress; } public String getMailaddress() { return mailaddress; } } Test.jspでデータを入力して送信ボタンを押すとTest_1.jspではnullが表示します。前の入力したデータではないです。どうしたらできますか?

    • ベストアンサー
    • Java
  • テキストボックス値をsetPropertyでセット

    HTMLのテキストボックス<input type="text">値を JSPのsetPropertyでセットBeanのフィールドとしてセットし、 Servlet側で取得したいと思っています。 JSPでのsetPropertyの書き方は次のようで、 直接valueに値を書く(またはbeanからとってきた値を書くようですが、 [質問1.]テキストボックスに入力された値を代入することは可能でしょうか? [質問2.]どのように記述すればよろしいのでしょうか。 ---JSP setPropertyの記述 <jsp:setProperty name="オブジェクト変数"             property="プロパティ"             value="プロパティ値"             param="パラメータ" />

  • JSPでbeanプロパティ(配列)をgetしたい

    こんにちわ。 表題の件ですが、下のようなbeanファイルとjspファイルの構成です。 --AAA.JSP-- <jsp:useBean id="E" scope="page" class="myPack.Engine" /> ・・・・途中をかなり略・・・・ <td><%= E.getIntSuryo() %></td> <========(1) Engineクラス(bean側) package myPack; public class Engine { int intSuryo[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; } public int[] getIntSuryo() { return intSuryo; } --------------ここまで------------- ここで、(1)の箇所の記述の仕方がわかりません。 インデックスを指定して、1~10までを表にしようと思っています。 getIntSuryo()の括弧内にindexを入れてみましたが、 エラーとなり怒られました。 どなたかご存知の方、教えてください。

    • ベストアンサー
    • Java
  • JSPとJavaScriptの連携について教えて下さい

    JSPとJavaScriptの連携について教えて下さい 当方、現在システム開発会社入社新人で、JavaやJSP、TomcatやOracleなどを使用してシステム開発をしている者です。 【用意されているデータ】 ・メイン画面:A.jsp ・空白確認用JavaBeans:Blank.java ・登録処理用JavaBeans:Regist.java 【やりたいこと】 JSPのメイン画面(A.jsp)で、テキストボックス欄に名前を入力し、登録ボタンを押します。 データベースへ登録を行うのですが、その前にJavaBeans(Blank.java)を利用して入力された名前欄のテキストボックスが空白(=未入力)かどうかをチェックさせ、OKなら新たに登録用の(Regist.java)を呼び出しますが、もし未入力の場合は「入力して下さい」旨のメッセージボックスを表示し処理を中断させます。 【教えてほしい問題点】 ボタンを押したらJavaScriptへ入り、そこでBlank.javaを呼び出し、さらにIF条件を用いて空白/登録を分けようとしています。普通にJSP内ではできました。しかしその命令文をそのままJavaScriptの中に入れると全く機能しなくなってしまいます。このサイトの類似質問を拝見し、『JSPはサーバ、JavaScriptはクライアントサイドで動くものであり、そもそもが違うのでそのままでは使えず、JavaScript用に加工して使う必要がある』という所まで突き止めました。しかし、『じゃぁ実際どうすれば良いの?』という所がわかりません。 以下にコードを記します。ご回答頂ける方がいましたら、ぜひご教授下さい。 なお、本来は初期表示時点の判定があったりともう少し複雑なコードですが、とりあえず今回の問題を解決できると思われる部分のみ記述しました。タグの位置やスペルミスなどがもしかしたらあるかもしれませんが、元はコンパイルが通るものなので、その点はご了承下さい。 【コード】 ◇◆A.jsp◆◇ <%@page import = 省略> <jsp:useBean id='Check' scope='session' class='パッケージ.Blank'> <jsp:useBean id='R' scope='session' class='パッケージ.Regist'> <html> <head> <title>登録</title> // JavaScript(自力でできる途中まで記述しました) <script lauguage="JavaScript"> <!-- function check(){ var a = document.form_A.NAME.value; ■■■■■■■■■■■■■■■■■■■■■ ■この中身がわかりません■ ■■■■■■■■■■■■■■■■■■■■■ if(Check.Blank() == false){ alert('空欄です。入力して下さい'); }else{ R.Regist(); } } --> </script> </head> <body> // 入力欄nameの情報をパラメータとしてNAMEでsetする Check.setNAME(request.getParameter("name")); // 入力欄作成 <form name="form_A"> <INPUT type="text" name="NAME"> // ボタン作成 <INPUT type="submit" value="登録ボタン" onClick="check();"> </form> <body> </html> ◇◆Blank.java◆◇ public class BlankBean{ // メンバ変数 private String NAME;  // コンストラクタ public BlankBean(){ NAME = null; } // 空白チェック(未入力はfalseを、OKの場合はtrueを返す)  public boolean Blank(){ if(NAME == null){ return false; } return true; } // setによるアクセスメソッド public void setNAME(String i){ NAME == i; } よろしくお願い致します。

専門家に質問してみよう