• ベストアンサー

JSP内でString型からint型に変換する方法(SAStruts使用)

現在、SAStrutsを使用して、カレンダーの年表を作成しています。 Formクラスで定義したString型の変数を、JSP内でint型に変換するのが、うまくいきません。 申し訳ございませんが、ご教授いただけませんでしょうか。 よろしくお願い致します。

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.7

request.getParameter("max_c"); というのは リクエストURLに http://~/~?max_c=xxx のようになっていないと取得できません。 リクエストに格納されているデータは getAttributeを使います。 ちなみに格納するときは setAttribute String strMax = ((formBeanの型)request.getAttribute("formBeanのキー")).getMax_c(); こんな感じ。

starter00
質問者

補足

askaaska様 おはようございます。 「request.getParameter("max_c");」 という書き方は、ヒドイ間違いなんですね。 (自分自身、ホント恥ずかしいです…。) お教えして頂いた通りにやったのですが、起動して、画面上で以下のように、エラーが出てしまいました。 --------------------------------------------------------------- org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: An error occurred at line: 7 in the generated java file Only a type can be imported. java.jp.ne.sastruts.start.form.SastrutsForm resolves to a package JSPファイル: /WEB-INF/view/sastruts/list.jsp の中の37行目でエラーが発生しました SastrutsForm cannot be resolved to a type 34: int ww = cal2.get(Calendar.DAY_OF_WEEK); 35: 36: 37: String strMax = ((SastrutsForm)request.getAttribute("idNo")).getMax_c(); 38: 39: max = Integer.parseInt(strMax); 40: Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423) org.apache.jasper.compiler.Compiler.compile(Compiler.java:317) --------------------------------------------------------------- JSP上では、「String strMax = ((formBeanの型)request.getAttribute("formBeanのキー")).getMax_c();」の、「formBeanの型」のところにエラーの赤線が出ているので、インポートが必要なのかなと思います。 (JSP内で、自作のクラス(formBean)をインポートする方法を、ネット等で調べているのですが、なかなかありませんね。)

その他の回答 (9)

  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.10

// max_cがpage、session等に入っている場合 <bean:define id="max_c" name="max_c" /> <% int max = Integer.parseInt(max_c); %> でどうでしょう?

参考URL:
http://struts.wasureppoi.com/taglib/05_define.html
starter00
質問者

お礼

sh_hirose様 ありがとうございます!! 後ほど、お教えして頂いた通りに、やってみたいと思います。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.9

そお? どんなエラーなのかわからないけど ガンバ!

starter00
質問者

お礼

askaaska様 ありがとうございます☆ 頑張ります~。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.8

JSPでimportする方法なんて すぐ見つかると思うけど どんな調べ方をしているのかしら。 http://www.google.co.jp/search?hl=ja&q=jsp+import&lr=lang_ja

starter00
質問者

補足

askaaska様 先ほど、補足を書かせて頂いた後、importの仕方を見つけ、修正したのですが、まだエラーが出てます。 なんだか自分自身、行き当たりばったりの対応をして、悪い流れになっているので、もう一度、見直しながらやっていきたいと思います。 ありがとうございます。

回答No.6

普通に考えれば以下のような取得方法になるとおもうんですけど・・・ String strMax = ((formBeanの型)request.getParameter("formBeanのキー")).getMax_c(); Beanの型とキーは質問者さんが作成されているのだからわからないはずはないですよね? ちなみに <html:hidden property="max_c" /> ↑のような記述でhtml上に表示されるのはタグの中で上記のようにformBeanのプロパティから取得してhiddenタグと共にhtmlを書き出しているからです。

starter00
質問者

お礼

ProKaseifu様 ありがとうございます。 教えて頂いたことを踏まえて、やってみたいと思います! hiddenタグのご説明までして頂いて、本当にありがとうございます。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.5

> JSP上でエラーが出なかった Eclipseかなにかで「問題」が出なかったてことかしら? EclipseでJSP修正しているときの「問題」は あんまり信用しない方がいいわよ。 正しい記述なのに「問題」が出たりするので 私は完全に無視しているわ。 > ブラウザで画面を起動したら、エラーが出てしまいました ずばり推測 NullPointerException

starter00
質問者

補足

askaaska様 はい、Eclipseで、エラーが出なかったので、大丈夫かと思い、起動したらダメでした。 (あまり信用しないほうが良いんですね。。。) エラーは、以下のように出ました。 java.lang.NumberFormatException: null java.lang.Integer.parseInt(Unknown Source) 私の記述したJSPの内容は… <html:hidden property="max_c" /> 1行目:Calendar cal = Calendar.getInstance(); 2行目:Calendar cal2 = Calendar.getInstance(); 3行目:cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); 4行目:cal2.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),1); 5行目:int max = cal.getActualMaximum(Calendar.DATE); 6行目:String strMax = request.getParameter("max_c"); 7行目:max = Integer.parseInt(strMax); 7行目の「Integer.parseInt」に対して、「java.lang.Integer.parseInt(Unknown Source)」というエラーが出ているので、6行目のリクエストからの取得の仕方が間違っているのだと思います。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

SAStrutsでの開発経験はないわ。 Struts、Struts2.0ならあるんだけどね。 SAStrutsは個人で勉強するのに使った程度よ。 感想・・・やっぱり私はXMLが好き

starter00
質問者

お礼

askaaska様 ありがとうございます。 私はStrutsとSAStrutsの経験が一回ずつで、まだまだ分からないことだらけですが、その中で、askaaskaさんのように、好きな分野を見つけられたらと思います。 お忙しい中、ありがとうございました。 PS.リクエストから取得する記述をして、JSP上ではエラーが出なかったのですが、ブラウザで画面を起動したら、エラーが出てしまいました。 SAStrutsは、かなりクセがあるみたいです。 なんとか頑張ってやります。 ありがとうございました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

<%~%> はJavaよ? Javaにそんな文法があると思ってる? エラーになるに決まってるわ。 変数がどのスコープに入っているかは判らないから まず片っ端から探すのね。 とはいっても、セッションかリクエストかページコンテキストのいずれかだけど。 (わざとカタカナで書いたわ) それぞれの中身を確認してみるといいわ。 もう少し具体的に書くと 1.上の3つのどこかに格納されているFormBeanを取得する 2.FormBeanからmax_cを・・・てここまでくればわかるわよね。 ・・・今更だけどmax_cてFormBeanの中身であっているのよね?

starter00
質問者

補足

askaaska様 度々、ありがとうございます。 まず、どのスコープかを調べます。 はい、max_cはFormBeanの中身です。 max_c自体は、JSPでカレンダーを作成するのに、それぞれの月の最大日数を表すものとして扱っています。 なので、アクションクラス内で、それぞれの月の最大日数(うるう年に対応したもの)を求めて、その日数をmax_cに渡そうとしてます。 ただ、その求めたmax_cを、JSP内で使用するのに、記述の仕方が分からなくて、手が進まずにいました。 私自身、まだまだ勉強不足と痛感しております。 PS.失礼ですが、askaaska様は、SAStrutsのご経験は、ございますでしょうか。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

変数のスコープが違うからよ。 ただそれだけ。

starter00
質問者

補足

askaaska様 ありがとうございます。 私なりに、「 <% int max = Integer.parseInt(${max_c}); %> 」や、「 <% int max = Integer.parseInt(${f:h(max_c)}); %> 」というふうに記述してみたのですが、エラーになってしまってて。 他に記述方法がありましたら、教えて頂けないでしょうか。 よろしくお願い致します。

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

どのように変換しようとして、どううまくいかないか記載した方がいいですよ。 私はString型→int型変換によく Integer.parseInt()とか使いますけど。 > SAStruts使用 とありますが、関連性ありそうなんですかねぇ?

starter00
質問者

補足

OKwebb様 ありがとうございます。 不十分な情報で、すみません。 以下に、JSP内で記述した内容の一部を載せます。 -----------calendar.jsp------------------- <html:hidden property="max_c" /> <% int max = Integer.parseInt(max_c); %> ------------------------------------------ 以上のように記述した場合、「Integer.parseInt」のあとのカッコ内の変数(文字)の下に、赤い線が出て、エラーというふうに出ちゃいます。 ちなみに、変数の「max_c」は、Formクラスで、「public String max_c;」というふうに記述しました。 SAStruts使用というのは、特に意味無く書きました。 よろしくお願い致します。

関連するQ&A

専門家に質問してみよう