事象
javaとjsp/サーブレットなどを使ってWebアプリを作成中に起きたエラー。
リストには値が正常に入っているが、取り出すときに画像のように表示が「@123abc」のようにおかしくなる。
<table class="pay-list">
<tr>
<th>曜日</th><th>献立</th>
</tr>
<tr>
<td>月</td><td><%=list.get(0) %></td>
</tr>
<tr>
<td>火</td><td><%=list.get(1) %></td>
</tr>
<tr>
<td>水</td><td><%=list.get(2) %></td>
</tr>
<tr>
<td>木</td><td><%=list.get(3) %></td>
</tr>
<tr>
<td>金</td><td><%=list.get(4) %></td>
</tr>
<tr>
<td>土</td><td><%=list.get(5) %></td>
</tr>
<tr>
<td>日</td><td><%=list.get(6) %></td>
</tr>
</table>
以下のようにリストが「@(数字や文字列)」のようになる。
原因
取得したいリストの中身は「id」「menuName」「menuCategory」という3つの値をそれぞれ持っている。
ここではmenuNameの値だけを取得したかったのだが、それを指定していなかったためうまく表示されなかったようだ。
例)list(0)は 「0(id), null(menuCategory), 鯖の味噌煮(menuName)」を持っている。
list.get(0)だけではそれぞれの値は取れない。
解決策
list.get(~)の後にMenuクラスのgetterである「.getManuName」を追加。
<table class="pay-list">
<tr>
<th>曜日</th><th>献立</th>
</tr>
<tr>
<td>月 </td><td><%=list.get(0).getMenuName() %></td>
</tr>
<tr>
<td>火</td><td><%=list.get(1).getMenuName() %></td>
</tr>
<tr>
<td>水</td><td><%=list.get(2).getMenuName() %></td>
</tr>
<tr>
<td>木</td><td><%=list.get(3).getMenuName() %></td>
</tr>
<tr>
<td>金</td><td><%=list.get(4).getMenuName() %></td>
</tr>
<tr>
<td>土</td><td><%=list.get(5).getMenuName() %></td>
</tr>
<tr>
<td>日</td><td><%=list.get(6).getMenuName() %></td>
</tr>
</table>
結果が想定通りに表示されました。
コメント