JSPでbeanプロパティ(配列)をgetする方法

このQ&Aのポイント
  • JSPでbeanプロパティ(配列)をgetするための方法について教えてください。
  • 具体的には、下のコードの(1)の箇所の記述方法がわかりません。
  • getIntSuryo()メソッドの括弧内にindexを入れてみましたが、エラーとなりました。
回答を見る
  • ベストアンサー

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を入れてみましたが、 エラーとなり怒られました。 どなたかご存知の方、教えてください。

  • kenton
  • お礼率74% (110/148)
  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
回答No.2

とりあえず、 <td><jsp:getProperty name="E" property="intSuryo[i]" />個</td> は <td><%=E.getIntSuryo()[i]%>個</td> これでいいと思います。 property="intSuryo[i]" Engineクラスにはこのようなプロパティは存在しないのでエラーが出ると思いますよ。

kenton
質問者

お礼

akane_210さん、たびたびありがとうございます。 <td><%=E.getIntSuryo()[i]%>個</td> ふむふむ。こういう書き方をするのですね。 書き方もなかなかわからず困っていました。 試してみましたが、エラーには変化がありませんでした。 >property="intSuryo[i]" >Engineクラスにはこのようなプロパティは存在しないのでエラーが出ると思いますよ。 うーむ。この辺りもわかっていない(勘違い)のかもしれませんが、 public int[] getIntSuryo() { return intSuryo; } この一節で、それを定義しているものだと思っていました。 同じ書き方でint型のプロパティを、JSPでgetできたもので。 配列型のプロパティの宣言(?)というのは、 Engineクラスにどのように書けばよいのでしょうか?

kenton
質問者

補足

お礼に書いてしまったので、補足に書かせていただきます。 結論から書きますと、E.getIntSuryo()[i]という書き方のままで値を取得できるようになりました。 ただ、JavaBeansのgetプロパティのソース部分を、一度消しもう一度作った後に、動くようになりました。 それしか行っていないので、正直、原因はわかりませんでした。 ありがとうございました。

その他の回答 (1)

回答No.1

Engineクラスの表記のしかたがおかしい気がしますが。。 いまいち何がしたいのかわかりませんが、 どのようなエラー(結果)がでてるのかを示していただけると、他の方も回答がしやすいと思います。 とりあえず、Engineクラスにデフォルトコンストラクターが無いのは問題だとおもいますよ。 <jsp:useBean id="E" scope="page" class="myPack.Engine" /> でインスタンスが作成できませんので。。

kenton
質問者

お礼

akane_210さん、回答ありがとうございます。 JSPの練習の一環として、JavaBeansの配列変数に入っている計算結果をJSPから呼び出すということをしています。 それをテーブルタグ内に表示させてみようとなったわけです。 >Engineクラスにデフォルトコンストラクターが無いのは問題だとおもいますよ。 JavaBeansでは、引数の無いコンストラクタが必要であるということですよね? 私の誤解の可能性が高いですが、 コンストラクタをまったく定義しない場合、 自動的に引数の無いコンストラクタが作られているという認識を持っていたため、 コンストラクタらしきものは書いておりません。 というか引数の無いコンストラクタと言われても・・・(^^;)という感じでした。 その後、少し変更を加えました。 <%for (int i = 0; i < E.getIntSuryo().length; i++) {%> <tr> <td><jsp:getProperty name="E" property="intSuryo[i]" />個</td> </tr> <%} %> このようにループ処理に変えてみました。 現在は、次のエラーが出ています。 E' has no get method for 'intSuryo[i]' やはり、Engineクラスできちんとコンストラクタを作っていないからでしょうか? エラーを読む限りではメソッドが無いと言われていますが、 なんのメソッドが必要なのかわかりません。。。 もしお気づきの点がありましたら、再び教えていただければ幸いです。

関連するQ&A

  • Bean利用時のJSPへのforward時のエラー

    <jspの設置場所> /usr/local/...../ssm3u/jsp/ ☆JSP(DMmvc.jsp)の内容(一部) <jsp:useBean id="mvc" class"mvc.MVCdata" scope="request" /> <%=mvc.getMSG()%> <サーブレット・Beanの設置場所> /usr/local/...../ssm3u/WEB-INF/classes/mvc/ (javaもclassもここに設置) ☆サーブレット(DMmvc.java)の内容 package mvc; ・・・・・(略)・・・・・ MvcData mvc = new MvcData(); req.setAttribute("mvc", mvc); RequestDispatcher rDispatcher = req.getRequestDispatcher("../jsp/DMmvc.jsp"); rDispatcher.forward(req, res); ・・・・・(略)・・・・・ ☆Bean(MvcData.java)の内容 package mvc; ・・・・・(略)・・・・・ というようにしてみたのですが 実行時エラー(parseException)になります。 useBeanを使わないJSPにforwardすると問題なく表示できます。 JSPの書き方(class="mvc.MvcData"あたり?)がおかしいような 気もするのですが・・・・

    • ベストアンサー
    • Java
  • サーブレットからArrayListにBeanを格納しJSPで使用する方法

    はじめまして、以下の問題ですが、わからず困っているので 質問させていただきます。 PCはWindowsXPで Eclipse Version: 3.4.1を使用し Tomcat5.5,jre6を使用しています。 研修の課題なのですが サーブレット内でBeanをArrayListを使って、動的確保したものを JSPに渡し、ArrayListに入ったBeanを取り出し、 そのBeanにsetした値を表示させるというプログラムを作っています。 JSPの部分がまったくわかりません。 JSPに配列はわたったようなのですが、JSPでのArrayListの取り出し方 などが、調べてもまったく解決しません。 もしわかる方がいましたら、教えてください。よろしくお願いします。 内容は以下です。 ///////////サーブレット//////////////////////////// ArrayList<Beans> beansid = new ArrayList<Beans>(); i=0; while(rs.next()){  sid = rs.getInt("sid");  sname = rs.getString("sname");  spass = rs.getString("spass");  Beans inbean = new Beans();  inbean.setsid(sid);  inbean.setsname(sname);  inbean.setspass(spass);  beansid.add(inbean); } request.setAttribute("beansid",beansid); //Beansクラス///////////////////// public class Beans{ private int sid; private String sname; private String spass; public int getsid(){ return sid; } public void setsid(int sid){ this.sid = sid; } public String getsname(){ return sname; } public void setsname(String sname){ this.sname = sname; } public String getspass(){ return spass; } public void setspass(String spass){ this.spass = spass; } } //JSPのコード///////////////////////////////// <%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS" %> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <jsp:useBean class="java.lang.String" id="beansid" scope="request"/> <%@page import="keiji.Beans"%> <%@page import= "java.util.*" %> <%@page import="java.sql.*"%> <%@page import="javax.servlet.*"%> <%--下のclassの所はBeansというのでも試してみました。--%> <jsp:useBean class="java.util.ArrayList" id="beansid2" scope="request"/> <%-- ArrayList beansid = (ArrayList)request.getAttribute("beansid"); --%> <%-- Iterator it = beansid.Iterator(); --%> ArrayList Iteratorと使ってみたのですが、 自分にはわけが分からず、JSPを実行したとき、処理がとまってしまいます。

  • 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: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が表示できない

    サーブレットからJSPに表示させようとしているのですがJSPの中にJAVAソース を加えると表示できなく画面が真っ白になり、加えなければ表示できます。 原因がなぜなのかわからなく困惑中です。ソースは以下の通りです。 アドバイスお願いします。 <%@ page contentType="text/html;charset=Shift_JIS"                               import= "java.sql.*" %> <jsp:useBean id="Bean" class="Servlet"scope="session" /> <html> <head><title>表示画面</title></head> <body> // BeanファイルでデータをSQL文によって取り出しrs変数に格納し // getNameCDメソッドによってデータを取り出す。BeanファイルではSQL文 実行確認済み <% ResultSet rs = Bean.getNamaCD(); %> <%  while(rs.next()){ out.println(rs.getString(1)); // 名前のコードを取り出し表示させる。 } %> </body> </html>

  • JSPの内容をcssで自由にデザイン

    Java 6 HTML 4.01 Windows 7 です。 以下のコードですが、cssでセルの1列目だけ色を変えたいのですが、どうすればいいでしょうか? 今は<td class="aiueo">を入れただけなので、全ての列の色が変わってしまっています。 <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="java.util.*" %> <jsp:useBean id="cb" class="mybeans.Beanファイル名" scope="request"/> <%! ArrayList colname; ArrayList data; %> <% colname = cb.getColname(); data = cb.getData(); %> <html> <head> <title>サンプル</title> </head> <body> <center> <h2>ようこそ</h2> <hr/> Welcome!<br/> <br/> <table border="1"> <tr bgcolor="#E0C76F"> <% for(int column=0; column<colname.size(); column++){ %> <th> <%= (String) colname.get(column) %> </th> <% } %> </tr> <% for(int row=0; row<data.size(); row++){ %> <tr> <% ArrayList rowdata = (ArrayList) (data.get(row)); for(int column=0; column<rowdata.size(); column++){ %> <td class="aiueo"> <%= rowdata.get(column) %> </td> <% } %> </tr> <% } %> </table> </center> </body> </html>

    • 締切済み
    • CSS
  • 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
  • jspでbeanを使いたいのですが...

    お世話になります。 JSPコード内のjavaプログラムをBeanとして読み込むようにし、インスタンスを作ってエラーにならないか試したところ、クラスが認識されないエラーが起きてしまいました。 他の記述やテキスト、サイト様を参考に手直しをしてみたもののうまく行かず、何だかわからなくなってしまいました... ご教授お願いいたします。 OS:WindowsVista サーブレット:Tomcat 参考テキスト:java+MySQL+Tomcatで始めるWebアプリケーション ファイルの階層 Desktop─test─jamyto┬aura─aurabottle.jsp            └WEB-INF─classes─auras┬IdMake.java                         └IdMake.class aurabottle.jsp側 <%@ page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.*"%> <%@ page import="auras.IdMake"%> <%auras.IdMake idmake = new auras.IdMake();%>    以下JSPコード IdMake.java側 package auras; import java.sql.*; public class IdMake { StringBuffer sb = new StringBuffer(); public int barthDay (String strYear, String strMonth, String strDay){ 以下Javaコード エラー文面 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSP FileName:null Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java An error occurred at line: 6 in the generated java file Only a type can be imported. auras.IdMake resolves to a package JSP FileName:/aurabottle.jsp Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java JSPファイル: /aurabottle.jsp の中の7行目でエラーが発生しました auras.IdMake cannot be resolved to a type

    • ベストアンサー
    • 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
  • <bean:write.../>がエラーを出す

    のですが原因が分かりません。 したのソースでコメントアウトしたものが動かないのです。 コメントアウトしていないものは動いています。 何が悪いのでしょうか? よろしくお願いします。 gomi.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%> <%@ page isELIgnored="false"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Java JakartaStruts</title> </head> <body> <jsp:useBean id="gomiBean" class="gomi.GomiBean" scope="request" /> <jsp:getProperty property="gomiInt" name="gomiBean"/><br/> ${gomiBean.gomiInt}<br/> <%-- <p>GomiBean gomiInt : <bean:write name="gomiBean" scope="request" property="gomiInt" /></p> --%> </body> </html>

専門家に質問してみよう