- - PR -
struts bean:writeでint出力
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-16 20:57
初めて投稿させて頂きます。
Strutsのbean:writeを使ってint出力ができず悩んでいます。 現状の抜粋を以下に表記します。 カテゴリと言うクラスが持つ要素を一覧で表示させようと しています。 [Category.java] private String name; private int position; //それぞれgetter, setterがあります。 [ShowCategoryListAction.java] Vector categoryList = new Vector(); Category c = new Category(); c.setName("hoge"); c.setPosition(1); categoryList.add(c); request.setAttribute("categoryList", categoryList); [showCategoryList.jsp] <logic:iterate id="categoryList" scope="request" name="categoryList"> <bean:write name="categoryList" property="name"/> <bean:write name="categoryList" property="position"/> </logic:iterate> ------------------------------------------------------- 上記のようにしたところ、コンソールにもブラウザにもエラーが 表示されることは無く、<logic:iterate...>の手前までが表示されます。 CategoryクラスのpositionをString型にすると問題なく表示されます。 bean:writeではtoString()が呼ばれて表示されるようなことが strutsのドキュメントに書いてありましたが、何か初歩的なミスを 犯しているのかうまくいきません。 環境は Struts1.2.4 Tomcat5.0.27 JDK1.4.2_05 です。 どなたかご教授お願い致します。 | ||||||||
|
投稿日時: 2004-11-16 21:17
Strutsのタグライブラリについてはよく知りませんが、toStringで出力しているのなら、
int型はプリミティブ型なので、toStringは実行できません。代わりにIntegerではだめですか? | ||||||||
|
投稿日時: 2004-11-16 22:01
返信ありがとうございます。
Categoryクラスの int position;をInteger position;に変更し ShowCategoryListActionクラスを c.setPosition(new Integer(1)); に変更しましたが、結果は同じでダメした。 ちなみに以下の記述でindexの0(ゼロ)が表示されると思うのですが、 同じ症状でうまくいきませんでした。 <logic:iterate id="categoryList" scope="request" name="categoryList" indexId="index"> <bean:write name="index"/> </logic:iterate> やはり、自分がどこかミスしてるような気がするのですが・・・ この辺りの有効な勉強となるURL等でも結構ですので、教えて頂けたら幸いです。 | ||||||||
|
投稿日時: 2004-11-16 22:06
勉強になる場所、といえば手っ取り早いのはここでしょうか・・・![]() http://sunsite.tus.ac.jp/pub/apache/struts/source/jakarta-struts-1.2.4-src.zip | ||||||||
|
投稿日時: 2004-11-16 22:22
結果は同じっていうことは、何も表示されないということですか? サーバ側に何かログは 出ていませんか? また、ブラウザからHTMLソースを取得したらどのようになっていますか?
それはそうでしょうね。indexもint型でしょうから。 | ||||||||
|
投稿日時: 2004-11-16 23:10
とりあえず解決致しました。
Tomcatのログを見たところ以下のようなエラーが出力されていました。 2004-11-16 22:48:14 StandardWrapperValve[action]: サーブレット action のServlet.service()が例外を投げました javax.servlet.jsp.JspException: キー org.apache.struts.action.MESSAGE に対するメッセージリソースが見つかりません "org.apache.struts.action.MESSAGE"に見覚えがあり、struts-config.xmlに <message-resources parameter="ApplicationResources" key="org.apache.struts.action.MESSAGE" /> を追記し、ApplicationResource.propertiesファイルを配置したところ 正常にintでもIntegerでもpositionの値が表示されるようになりました。 但し、このApplicationResourceファイルとbean:writeでint出力の関係については 不明です。 根本的な解決にはなっておりませんが、有難うございました。 |
1