• 締切済み

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

みんなの回答

  • 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オブジェクトを関数の中で呼び出すことが出来る物なのでしょうか。