とっておきの「夜食」教えて下さい

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

A 回答 (10件)

request.getParameter("max_c");


というのは
リクエストURLに
http://~/~?max_c=xxx
のようになっていないと取得できません。
リクエストに格納されているデータは
getAttributeを使います。
ちなみに格納するときは
setAttribute

String strMax = ((formBeanの型)request.getAttribute("formBeanのキー")).getMax_c();

こんな感じ。

この回答への補足

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)をインポートする方法を、ネット等で調べているのですが、なかなかありませんね。)

補足日時:2009/04/09 11:54
    • good
    • 0

// 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
    • good
    • 1
この回答へのお礼

sh_hirose様

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

お礼日時:2009/04/13 17:03

そお?


どんなエラーなのかわからないけど
ガンバ!
    • good
    • 0
この回答へのお礼

askaaska様

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

お礼日時:2009/04/09 15:29

JSPでimportする方法なんて


すぐ見つかると思うけど
どんな調べ方をしているのかしら。

http://www.google.co.jp/search?hl=ja&q=jsp+impor …

この回答への補足

askaaska様

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

ありがとうございます。

補足日時:2009/04/09 13:42
    • good
    • 0

普通に考えれば以下のような取得方法になるとおもうんですけど・・・



String strMax = ((formBeanの型)request.getParameter("formBeanのキー")).getMax_c();

Beanの型とキーは質問者さんが作成されているのだからわからないはずはないですよね?

ちなみに
<html:hidden property="max_c" />
↑のような記述でhtml上に表示されるのはタグの中で上記のようにformBeanのプロパティから取得してhiddenタグと共にhtmlを書き出しているからです。
    • good
    • 0
この回答へのお礼

ProKaseifu様

ありがとうございます。
教えて頂いたことを踏まえて、やってみたいと思います!

hiddenタグのご説明までして頂いて、本当にありがとうございます。

お礼日時:2009/04/09 11:43

> JSP上でエラーが出なかった


Eclipseかなにかで「問題」が出なかったてことかしら?
EclipseでJSP修正しているときの「問題」は
あんまり信用しない方がいいわよ。
正しい記述なのに「問題」が出たりするので
私は完全に無視しているわ。

> ブラウザで画面を起動したら、エラーが出てしまいました
ずばり推測
NullPointerException

この回答への補足

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行目のリクエストからの取得の仕方が間違っているのだと思います。

補足日時:2009/04/08 19:26
    • good
    • 0

SAStrutsでの開発経験はないわ。


Struts、Struts2.0ならあるんだけどね。
SAStrutsは個人で勉強するのに使った程度よ。

感想・・・やっぱり私はXMLが好き
    • good
    • 0
この回答へのお礼

askaaska様

ありがとうございます。
私はStrutsとSAStrutsの経験が一回ずつで、まだまだ分からないことだらけですが、その中で、askaaskaさんのように、好きな分野を見つけられたらと思います。
お忙しい中、ありがとうございました。

PS.リクエストから取得する記述をして、JSP上ではエラーが出なかったのですが、ブラウザで画面を起動したら、エラーが出てしまいました。
SAStrutsは、かなりクセがあるみたいです。

なんとか頑張ってやります。
ありがとうございました。

お礼日時:2009/04/08 18:54

<%~%>


はJavaよ?
Javaにそんな文法があると思ってる?
エラーになるに決まってるわ。

変数がどのスコープに入っているかは判らないから
まず片っ端から探すのね。
とはいっても、セッションかリクエストかページコンテキストのいずれかだけど。
(わざとカタカナで書いたわ)
それぞれの中身を確認してみるといいわ。

もう少し具体的に書くと
1.上の3つのどこかに格納されているFormBeanを取得する
2.FormBeanからmax_cを・・・てここまでくればわかるわよね。

・・・今更だけどmax_cてFormBeanの中身であっているのよね?

この回答への補足

askaaska様

度々、ありがとうございます。
まず、どのスコープかを調べます。

はい、max_cはFormBeanの中身です。
max_c自体は、JSPでカレンダーを作成するのに、それぞれの月の最大日数を表すものとして扱っています。

なので、アクションクラス内で、それぞれの月の最大日数(うるう年に対応したもの)を求めて、その日数をmax_cに渡そうとしてます。

ただ、その求めたmax_cを、JSP内で使用するのに、記述の仕方が分からなくて、手が進まずにいました。

私自身、まだまだ勉強不足と痛感しております。

PS.失礼ですが、askaaska様は、SAStrutsのご経験は、ございますでしょうか。

補足日時:2009/04/08 17:13
    • good
    • 0

変数のスコープが違うからよ。


ただそれだけ。

この回答への補足

askaaska様

ありがとうございます。
私なりに、「 <% int max = Integer.parseInt(${max_c}); %> 」や、「 <% int max = Integer.parseInt(${f:h(max_c)}); %> 」というふうに記述してみたのですが、エラーになってしまってて。

他に記述方法がありましたら、教えて頂けないでしょうか。

よろしくお願い致します。

補足日時:2009/04/08 13:53
    • good
    • 0

どのように変換しようとして、どううまくいかないか記載した方がいいですよ。



私はString型→int型変換によく
Integer.parseInt()とか使いますけど。

> SAStruts使用
とありますが、関連性ありそうなんですかねぇ?

この回答への補足

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使用というのは、特に意味無く書きました。

よろしくお願い致します。

補足日時:2009/04/08 11:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A