• ベストアンサー

JSPでの表示

今、beanで取得した値を、JSPで表示したいのですが、 悩んでます。 /* Samplebean*/ public class Samplebean{ import java.util.*; private Vector hinmei = new Vector(); public void exets(){ hinmei.addElement("mikan"); hinmei.addElement("ringo"); public void setHINMEI(Vectro vec){hinmei = vec;} public Vector getHINMEI(){return hinmei;} } そして、JSPは、 <html> <body> <%=(String)Samplebean.getHINMEI().elementAt(0);%> </body> などとした時に、エラーでページが表示されません。 何か、勘違いしてるのでしょうか? 助言よろしくお願いします。

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

  • ベストアンサー
noname#16216
noname#16216
回答No.3

確認ですが、Samplebean の > public void exets(){ >  hinmei.addElement("mikan"); >  hinmei.addElement("ringo"); > } について、このexets()というメソッドはどこかで呼び出されているのですか? もし、呼び出されていなければ、hinmei というVectorには何も要素が存在しない ので、 > <%=(String)SAMPLE.getHINMEI().elementAt(0);%> > <%=(String)SAMPLE.getHINMEI().elementAt(1);%> で、ありえない要素にアクセスしてエラーになるとは思いますが、、、

takuya_m
質問者

お礼

回答ありがとうございます。 まったくの、spoonyさんの言うとおりの勘違いです。 大変迷惑をかけました。 悩んでいく中で、exets() メソッドのことが頭の中から とんでいました・・。 今回は、本当にありがとうございました。 と同時に、お礼遅れまして、失礼しました。

その他の回答 (2)

noname#16216
noname#16216
回答No.2

> <jsp:useBean id='SAMPLE' scope='request' class='Samplebean'/> ということは、Samplebean クラスのインスタンスがSAMPLEという名前で あることを定義しています。 > <%=(String)Samplebean.getHINMEI().elementAt(0);%> ここで、Samplebean と記述されていますが、これをSAMPLEに変更しなければなりません。 また、リクエストオブジェクトにも、SAMPLEという名前でインスタンスを 格納しておかなければなりません。 すなわち、request.getAttribute("SAMPLE") でSamplebean のインスタンスが 取得できなければならないということです。

takuya_m
質問者

補足

回答ありがとうございます。 > <%=(String)Samplebean.getHINMEI().elementAt(0);%> を変更しまた。しかし、結果、Vector値が nullとなってしまいます。 /*SampleServlet.java*/ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SampleServlet extends HttpServlet { ServletContext sc; public void init(ServletConfig config) throws ServletException { super.init(config); sc = getServletContext(); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { String st = request.getParameter("param"); Samplebean SAMPLEBEAN = new Samplebean(); SAMPLE.setPara(java.lang.Integer.valueOf(st).intValue()); request.setAttribute("SAMPLE",SAMPLEBEAN); sc.getRequestDispatcher("/Hyouji.jsp").forward(request, response); } public void destroy(){ } } とServletはしまして、Beanは、 /*Samplebean*/ public class Samplebean { private int parame; private Vector hinmei = new Vector(); public void exets(){ hinmei.addElement("mikan"); hinmei.addElement("ringo"); } public Samplebean() { super(); } public void setHINMEI(Vector vec){hinmei=vec;} public Vector getHINMEI(){return hinmei:} public void setPara(int i){parame = i;} public int getPara(){return parame;} } そして、JSPは、 <%-- Hyouji.jsp --%> <%@ page contentType="text/html;charset=Shift_JIS" %> <jsp:useBean id='SAMPLE' scope='request' class='Samplebean'/> <html> <body> これは、JSPファイルの出力。<br> <br> パラメータは: <%=SAMPLE.getPara()%> <br> 品名は: <%=(String)SAMPLE.getHINMEI().elementAt(0);%> <%=(String)SAMPLE.getHINMEI().elementAt(1);%> </body> です。 自分でも何回も見直したのですが・・・。 パラメータの部分は、Vectro要素がなければ、正常にJSPで表示できます。 そのために付け加えてるものです。 どこか、勘違いしてるかも知れませんが、またご教授願いたいと思います。

  • watapen
  • ベストアンサー率10% (5/48)
回答No.1

beanってjsp:useBeanとかしなくてもつかえるんですか?

takuya_m
質問者

補足

すいません、略してました。 <jsp:useBean id='SAMPLE' scope='request' class='Samplebean'/> です。

関連するQ&A