- PR -

2次元HashMapをJSPで表示

投稿者投稿内容
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-06-06 10:46
Lizuaさんお返事ありがとうございます。

2次元配列ではないときは、

<bean:write name="フォーム名" property="record(NAME)"/>

と、表示していて、2次元にしたときにproperty=""の中に書く内容がわからず
Java上では表示できたので、それをJSP上で引用しようと考えました。

最初からpropertyの書き方を聞くべきであったなと、反省してます。
宜しくお願いします。
Lizua
会議室デビュー日: 2006/04/18
投稿数: 14
投稿日時: 2006-06-06 12:01
recordが宣言されている場所のimportはJSPでされていますか?
<%@ page import="--.--.---.--" %>
↑こんなのです。

フルパスです。

recordが宣言されていないというエラーなら、
もしかしたらこれで解決するのでは無いでしょうか?

オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-06-06 12:15
Lizuaさんお返事ありがとうございます。

指摘して頂いた点ですが、recordを宣言してある場所は以下の場所にあります。
C:\Program Files\Apache Group\Tomcat 4.1\webapps\licenseManageSystem\WEB-INF\classes\licenseManageSystem

そして以下のようなインポートをしています。
<%@ page import ="licenseManageSystem.*"%>

これでも以前と同じエラーが出てしまいます(汗
自分でも調査中ですが、指摘部分がありましたらお願いします。
はちぃ
常連さん
会議室デビュー日: 2004/12/20
投稿数: 29
投稿日時: 2006-06-06 12:48
こんにちは。
初心者なので、間違いなどありましたらご指摘下さい。

Mapの実装だったら
コード:
<logic:iterate id="record" name="records">
    <bean:write property="name" name="record"/>
</logic:iterate>


でいけないのでしょうか。
すみません、試してはいないので、これでできるとはいえないです。
Lizua
会議室デビュー日: 2006/04/18
投稿数: 14
投稿日時: 2006-06-06 14:00
recordを宣言してある(recordのsetter getterが存在する)
ファイルのパッケージパスでimportしてみたらどうなります?

<%@ page import="パッケージ" %>

[ メッセージ編集済み 編集者: Lizua 編集日時 2006-06-06 14:02 ]
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-06-06 14:45
Lizuaさん、はちぃさん返信ありがとうございます。

<%@ page import ="licenseManageSystem.IchiranActionForm"%>

上記のようにインポートしました。

ですが、エラーは同じでした(滝汗

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-06-06 15:59
まずタグライブラリを使わず、最初のスクリプトレットから解決していきましょう。

引用:

これをJavaでは、以下のようにしてデータを表示することができました。
コード:
System.out.println(((Map) record.get("1")).get("NAME"));



この記述で変数「softname」の中身が出力されていますが、
strutsを使ってる故に、JSPでこの動作と同じ事をしたいですが、
コード:
<%
 ((Map) record.get("1")).get("NAME");
%>




このrecord変数はどこで宣言されているのでしょうか。どうも、Actionフォームもしくは
Actionクラスから自動的に渡されるものと思われているようですが、そういうものでは
なく、明示的に渡す必要があります。スコープの概念は、後で勉強してもらうとして、
まず、Actionクラスで下のようにrecordオブジェクトをRequestオブジェクトの属性と
して渡す必要があります。

コード:
request.setAttribute("record", record);


JSP側では、これを受け取るために、useBeanタグを使います。

コード:
<jsp:usebean id="record" scope="request" class="java.util.Map" />



これで、上記のスクリプトレットを記述したJSPが実行できるはずです。
ただし、おそらく期待した内容にはならないでしょう。「同じことをしたい」のなら
最初のJavaコードと同じくSystem.out.printlnを実行すればいいですが、Webの画面に
出力したいのであれば、

コード:
<%=((Map) record.get("1")).get("NAME")%>


と記述してみてください。
オガシン
常連さん
会議室デビュー日: 2006/05/23
投稿数: 31
投稿日時: 2006-06-06 16:28
ukさんお返事ありがとうございます。

Actionクラスに
request.setAttribute("record", record);


JSPファイルに
<jsp:usebean id="record" scope="request" class="java.util.Map" />
<%=((Map) record.get("1")).get("NAME")%>
を、追加することによって求めていたデータが表示されました。

かなりの時間なやんでいたので、たった一つのデータが画面に表示されただけですが、
とても感動しました(泣

これも、返信いただいたみなさんおかげです、
貴重な時間を割いて返信頂きありがとうございましたm(__)m

スキルアップ/キャリアアップ(JOB@IT)