• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Strutsでの質問)

Strutsでの質問

このQ&Aのポイント
  • Strutsでの質問について悩んでいます。実装の方法がわからず困っています。
  • ActionFormやActionの定義方法について教えていただきたいです。
  • サイトをいくつか参考にしてみましたが、よくわかりません。参考URLを教えていただけると嬉しいです。

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

  • ベストアンサー
  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.3

あと、細かいつっこみですが、 LinkedHashMap<String, String> yearMap = new LinkedHashMap<String, String>(); とありますが、 Map<String, String> yearMap = new LinkedHashMap<String, String>(); と書くのが一般的です。 宣言はできるだけ抽象化しましょう。 そうしておくことにより、たとえば、LinkedHashMapをやめてTreeMapに変えたいときなどに、影響範囲を小さくできます。

theyouth
質問者

お礼

ご回答ありがとうございます。 本当お忙しいところ、教えて頂き感謝しております。 何とか、結果につながるようになりましたのでご報告致します。 ありがとうございました。 今後もご指導、ご鞭撻の程 宜しくお願い致します。

その他の回答 (2)

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.2

Formの初期化は一般的にActionの初期化処理で行います。 なので、記述の内容であっていると思います。 ただ一か所気になるのは、なぜわざわざ request.setAttribute しているのでしょうか? 何か理由があるなら仕方ありませんが、それではStrutsを使っている意味がないです。

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.1

Strutsうんぬんより、Javaが分かっていないだけでは? setterというのは、 public void setYear_map(LinkedHashMap year_map){ this.year_map = year_map; } となります。 Eclipseなどをお使いなら、便利な機能で、setter、getterを自動生成できます。 そもそも、変数名にアンダーバーなんて使っちゃだめです。 推奨されていないという点と、もしかしたらStrutsだと誤動作するかもしれません。

theyouth
質問者

お礼

お世話になっております。 ActionFormとActionを変更してみたのですが ご確認頂ければ幸いです。おかしい部分ご指摘お願いします。 public class UserDateCheckActionForm extends ActionForm{ LinkedHashMap<String, String> yearMap = new LinkedHashMap<String, String>(); LinkedHashMap<String, String> monthMap = new LinkedHashMap<String, String>(); LinkedHashMap<String, String> daysMap = new LinkedHashMap<String, String>(); public LinkedHashMap<String, String> getYearMap() { return yearMap; } public void setYearMap(LinkedHashMap<String, String> yearMap) { this.yearMap = yearMap; } public LinkedHashMap<String, String> getMonthMap() { return monthMap; } public void setMonthMap(LinkedHashMap<String, String> monthMap) { this.monthMap = monthMap; } public LinkedHashMap<String, String> getDaysMap() { return daysMap; } public void setDaysMap(LinkedHashMap<String, String> daysMap) { this.daysMap = daysMap; Actionクラス //省略 UserDateCheckActionForm userCheckForm = (UserDateCheckActionForm)form; LinkedHashMap<String,String> yyyyMap= userCheckForm.getYearMap(); for(int i =1; i <=30; i++){ for(int j=1970; j<=2000; j++){ String key = String.valueOf(i); String value = String.valueOf(j); yyyyMap.put(key, value); } } LinkedHashMap<String,String> mmMap= userCheckForm.getMonthMap(); for(int i =1; i <=12; i++){ for(int j=1; j<=12; j++){ String key = String.valueOf(i); String value = String.valueOf(j); mmMap.put(key, value); } } LinkedHashMap<String,String> ddMap= userCheckForm.getDaysMap(); for(int i =1; i <=31; i++){ for(int j=1; j<=31; j++){ String key = String.valueOf(i); String value = String.valueOf(j); ddMap.put(key, value); } } request.setAttribute("yyyyMapDate", yyyyMap); request.setAttribute("mmMapDate", mmMap); request.setAttribute("ddMapDate", ddMap); return mapping.findForward("success"); このような感じにしてますがどうでしょうか? 生年月日なのでfor文でループさせて同じ処理をしてますがどうでしょうか。 自分でもテストを行ってみたいと思います。 ご指摘頂ければ幸いです。 宜しくお願い致します。

theyouth
質問者

補足

ご回答ありがとうございます。 確かにご指摘の通り、勉強不足でして、今必死に勉強させて頂いてる所です。 この場合も普通にsetter、getterを作るだけでよいのでしょうか それが気になってしまって・・・。 Mapのputはどこでしたらいいのでしょうか? Actionでしょうか。この課題にずっと取り組んでるわけですが もう何が何だかよくわからなくなってきてしまいまして…T_T アンダバーの件は今後使わないように致します。

関連するQ&A

専門家に質問してみよう