Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

プルダウンメニューについて

ただいまstrutsを用いてプログラムを作っています。
しかしjspの表示のときにエラーがでて困っています。
jspに月を選ぶプルダウンメニューをつけたいのですが
下のプログラムのvalue="<%=array.get(1)%>などと
書くと
「シンボルを解決できません。」
というエラーが起きます。
解決方法が見つからないのでヒントをもらえないでしょうか?
おねがいします。


(arrayListの中身には[0]年,[1]月,[2]日の情報をうめこんであります。)
<% ArrayList array=(ArrayList)session.getAttribute("XX");%>

<html:select property="month" value="<%=array.get(1)%>">
<% for(int month=1;month<=12;month++){%>
<html:option value="<%=month%>"><%=month%>月</html:option>
<%}%>
</html:select>

14

回答

7054

閲覧

14件の回答

評価

0

strutsの環境はないんで試してませんが、ロジック的には「シンボルを解決できません。」になりそうにはないですね。
selectのvalue属性って、何に使うんでしょうか?

評価

0

変数のスコープは大丈夫でしょうか?
array.get(1)
を実行している部分で、
変数arrayは見えているでしょうか?

評価

0

わかりにくかったので画面構成から説明させていただきます。

画面構成は
メニュー画面→お知らせ入力画面(名前、掲載期限、質問内容)といった感じです。
この掲載期限のところで
ArrayList(年、月、日の情報を埋め込んであります)を使っています。
また掲載期限はメニュー画面からお知らせ入力画面に飛んだときに、
今日の日付を表示したいので<html:select>のvalueを使って
表示させようと思っています。

valueは<option ・・・ selected>みたいなものです。
今日は6月ですのでarray.get(1)には「6」が格納されているので
お知らせ入力画面に飛んだとき6月が表示されている。
といった感じにしたいです。

評価

0

sessionでarrayをとってきているので
スコープは大丈夫だと思います。

評価

0

変換・生成されたJavaソースコードを見ましたか?

評価

0

エラーページになってしまうので、Javaソースコード
が生成されていませんでした。

評価

0

JSP->Javaソース->コンパイル->コンパイルエラー
という流れから考えれば、生成されているはずです。

おそらくこんさんの設定不足ではないでしょうか。
例えばTomcatのデフォルト設定では生成されたJavaファイルを削除します。

評価

0

>例えばTomcatのデフォルト設定では生成されたJavaファイルを削除します。
あ、エンコードが違うだけかも。
どっちにしろ、コンパイルエラーが起こるということはソースがあるということでは?

評価

0

javaソースコードが生成されたので見てみたのですが
ArrayList array=(ArrayList)session.getAttribute("XX");
         ・
    ・
    ・
    ・
_jspx_th_html_select_0.setValue(array.get(0));

という具合になっていました。

評価

0

<select><option>をstrutsを使わずに記述した場合、エラーになりますか。

評価

0

生成されたソースはコンパイルできましたか?
コンパイルエラーが出るようなら、そこから解決の糸口が見つかると思います。

評価

0

strutsを使わずに<select><option>を記述したときはエラーが起きませんでした。

またstrutsを使って<select><option>を書いたときに
value=<%=・・・%>の・・・にArrayList型を入れるとエラーがおき、
そのArrayList型をtoString()でString型に直したときは
エラーが起きませんでした。
またString型以外(int型など)のものも試しに入れてみましたが
エラーが起きました。

評価

0

シンボルを解決できない、ではないような気がしつつ。

(String)array.get(0)

ならどうなんでしょうか。
ArrayListはジェネリクス指定されてないようなので、array.get(0)はObject型だと思うんですが。

評価

0

Object型だからできなかったんですね。
mioさんのいうとおりString型にキャストしてやると
無事解決しました。

三等兵さん、これさん、mioさん
ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。