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

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

0

コンボボックスで選択されたものを次の画面で表示したい

はじめまして。jaikoと申します。
strutsを勉強し始めて1週間。
わからないことがあり、質問させていただきます。


データベースの中にIDとNameのフィールドを持つ、テーブルを作成しました。IDには1,2,3...Nameにはりんご、みかん、ぶどう、のように果物の名前を入れました。

コンボボックスにこのNameの一覧をいれて、選択された果物の名前を、submitボタンを押されたあとの次の画面に表示させたいのですが、それがなかなかうまく行きません。


Jspの方では、以下のように書きました。

<html:select name="fruitForm" property="strfruitData">
  <logic:iterate id=fruitForm" name="fruit">
      <option value="<bean:write name="fruitForm" property="fruitId"/><bean:write name="fruitForm" property="fruitName"/></option>
</logic:iterate>
</html:select>

ちなみにこの書き方でコンボボックスに果物名は入ってます。
Actionクラスと遷移先の表示のさせ方がわからないのです。

次のJsp画面で、

<bean:write name="fruitForm" property="strfruitData"/>

とするとIDが表示されているので、strfruitDataをもとfruitNameをとるのかと思いますが、Actionの書き方がわからず困ってます。

みなさんよろしくおねがいします。


5

回答

5958

閲覧

5件の回答

評価

0

【JSP側だけでの対応】
コンボボックス作成時に取得し、データを表示用画面で logic:iteratorを使用してvalue値が同一であればlabel側の値を表示させればいいんじゃない?

html:optionsCollection を使用すればもっとすっきりとOPTIONを記述できますよ。

評価

0

>杏さん

丁寧にご回答ありがとうございます。
html:optionsCollectionはちょっと知らなかったので、調べて使ってみますね。


>>コンボボックス作成時に取得し、データを表示用画面で logic:iteratorを使用してvalue値が同一であればlabel側の値を表示させればいいんじゃない?<<


これについても、ご回答くださってありがとうございます。
ただ、如何せん自分が未熟なものでまだ説明されていることがイマイチ頭に入ってません。

もしよろしければ、具体的な記述方法を教えてもらえると助かります。まだ始めたばかりなので、本を見ながらついていくので一杯一杯の状態なのです。

ただ自分でも杏さんの説明を基に、調べてみようと思うので、自分でも考えてやってみます。

評価

0

やり方的には

<html:select name="fruitForm" property="strfruitData">
<logic:iterate id=fruitForm" name="fruit">
<option value="<bean:write name="fruitForm" property="fruitId"/><bean:write name="fruitForm" property="fruitName"/></option>
</logic:iterate>
</html:select>

と同じです。

1,<bean:define>   で<html:select>のvalue値を<% %>で使用可能にする。
2,<logic:iterate> でcollectionの分だけIterateさせる
3,<logic:equal>   でcollectionの内部データのvalue値とチェックをする。
4.<bean:write>    で3の条件にあったものを表示させる。


評価

0

ありがとうございます。
このやり方は理解できました。

もう一つ伺ってもよろしいでしょうか。


今回、自分が考えたこととして、ActionFormに

・fruitId(フルーツのID)
・fruitName(コンボにずらっと表示されるフルーツの名前)
のgetter,setterを記述しました。

さらに、コンボで選択されたフルーツ名も必要だと考え
・selectfruitName
のgetter,setterも記述しました。

html:selectのpropertyである,IDとName情報のあるstrfruitDataも同様にsetter,getterを行いました。


最初に自分が書き込みしたやり方だと、遷移先のJSPにはIDが表示されます。遷移元のJSPはこのままで、Actionのほうで、IDと対になっているNameを取り出して、遷移先のJSPへ表示させることはできないでしょうか?

selectfruitNameを表示させたいのです。



なんかうまく説明できなくてすいません。

評価

0

optionのvalueにfruitIdいれてますけど、これをfruitNameにしたら次の画面にフルーツの名前が表示されました。

これはいいんですかね?

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