ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Struts!!!!!コミュの質問!

  • mixiチェック
  • このエントリーをはてなブックマークに追加
テステスといいます
皆さん始めまして
strutsの開発はかれこれ1年近くやってなくって最近また勉強し始めたところなんですが、500のエラーが返ってくるぅう><
http://xxx/auge/java/sendMessage.jspにアクセスすると
javax.servlet.ServletException: アクション /sendMessage に対応するマッピングが見つかりません

struts-config.xmlもこのように修正して
<action path="/sendMessage"
type="javahello.SendMessageAction"
name="sendMessageForm"
scope="request"
input="/sendMessage.jsp"
validate="true">
tomcatを再起動しても駄目です。
サンプルのWelcome.jspはちゃんと表示されるんですけどね。。
tomcat version:5.0.28
struts version;1.2
です
どなたかご教授くださいまし><

コメント(22)

forward先が設定されてないとか・・・?
はじめまして。

たしかStrutsのpathへのアクセスは〜.doで行うはずだったと思います。

なので、URL自体が
http://xxx/auge/java/sendMessage.jsp
↓
http://xxx/auge/java/sendMessage.do

ではないでしょうか?
初めまして、初めて書き込みさせていただきます。よろしくお願いします。しばらくstrutsはやって無いんですが記憶をたどりつつ回答してみます。違ってたらすいません。
struts-config.xmlのmessage-resource parameterとヨシムラさんのMessageResources.propertiesのあるパスは合っているのでしょうか?
えーとsrc/javaにxx.propertiesのファイルを入れたんですよね?それならjavaディレクトリがあってそのなかにMessageResources.propertiesファイルがあるってことですから
<message-resources parameter="java.MessageResources" />
にしないといけないと思います。

そういう仕様になってたと思います。

面倒なようなら
<message-resources parameter="MessageResources" /> のままでclassに直接xx.propertiesファイルを入れてみて下さい

たぶんそれでうまくいくでしょう。
追記:
たとえ使わなくても、何も書いてない.propertiesファイルを一応作成して<message-resources parameter="MessageResouces" /> は必ずstruts-config.xmlに書いてください。それが無くて上手くいかないこと良くありますよ。
(僕は1.1の時の経験で言っているんで1.2ではどうかは分りませんけどね)
*.properties のパッケージってわかりにくいよね。

java.util.PropertyResourceBundle で解釈しているプロパティファイルは、Javaのパッケージを同様に解釈する、という特徴があります。すなわち、

| com.example.Example
| というJavaのクラスは
| $CLASSPATH/com/example/Example.class
| に配置しなければならない。

というのと同様、

| java.MessageResource
| というリソースを定義したファイルは
| $CLASSPATH/java/MessageResource.properties
| に配置しなければならない。

です。

つまり、Eclipseだったら、
MessageResource.properties をソースファイルと同じフォルダにつっ込んでおけば、コンパイル時にそのままクラスパス管理下にコピーされて、そのパッケージのリソースファイルとして読み込めます。

src/java/MessageResource.properties
に配置しておいたファイルは、コンパイル時に
bin/java/MessageResource.properties
といった場所にコピーされているので、
java.MessageResource
という名前で読み込める、というわけです。
もともとStrutsってEUなどの多国籍で複数の言語に対応するためにMessageResourceって機能があるって聞いたことあります。それで国際化のリソースバンドル使ってんじゃないですかね。
えっと、始めまして
今のプロジェクトからstrutsを始めて使う
まっかずと申します。

業務で、配列型のデータをJSPにて表示しようとしたら
Bean dispenseERRCheck のプロパティ mainList に対するゲッターメソッドがありません

というExceptionをはいている状態になってます。
ActionForm内にはゲッターメソッドはあるのですが
どうも読み込んでくれません。

ちなみにタグの状態はこんな感じです。
<logic:iterate id="mainData" name="dispenseERRCheck" property="mainList" indexId="indexV" scope="request">
<bean:write name="mainData" property="orderNo" />
</logic:iterate>

どなたかご教授お願いします。
>まっかずさん
まず、Exception内容を提示してもらうわないと
ちゃんとした回答が出来ない気が・・・
それと、「logic:iterate」は、Collection型を回して
くれると私的には認識しておりすが、
まっかずさんが仰られる配列型はその範疇でしょうか。
普通に配列型がいけるなら私の知識不足です(汗
>まっかずさん

「ActionForm内にはゲッターメソッドはあるのですが」
と書かれているActionFormのインスタンスは
正しくdispenseERRCheckという名称でrequestにBINDされていますでしょうか?

>のりさん

ソース(1.2.7の)を見てみたところ、
どうやら配列でもよさそうです
(Arrays.asList(Object[]) を使ってList変換している模様)

配列以外では、Collection、Iterator、Map、Enumerationの何れかが実装されているクラスならよいようです。
>しんさん
やっぱりそうでしたね(汗
自分でも気になって調べたら変換してる
部分を発見して...orz

そうなるとあとは、ゲッター名が少し違ってるか
しんさんが仰られてる通り、きちんとrequestにせっと
されてないかですね。。。
後々わかったのですがタグ内に定義している
ActionFormの「mainList」はのゲッターメソッドの戻り値の型は
List型ではなくObject型配列になってたので
修正をかけました・・・。
認識不足で申し訳ないです・・・。lili _| ̄|○ ilil

んで、あともう1つ質疑を投げておきます。
struts-config.xml内のmessage-resources内で定義している
propertiesファイルをロードは出来たのですが
解りやすい書込みの方法が見当たりません。
何かよいサンプルコードがあればご教授お願いします。
propertiesファイルに設定を追加を行うっていう
認識でいいのかな?

#ここからコード
Properties prop = new Properties();
// 追記するなら一旦load
prop.load(new FileInputStream(new File("PropertyPATH")));
// 追記分を設定
prop.setProperty("KEY","VALUE");

// HashTable継承してるから↓でもOK
//prop.put("KEY1","VALUE1");

// 書き込み
prop.store(new FileOutputStream(new File("PropertyPATH")),"comment");

これで書き込めるけど、何かおれ勘違いしてる?w
>まっかずさん

>struts-config.xml内のmessage-resources内で定義している
>propertiesファイルをロードは出来たのですが
>解りやすい書込みの方法が見当たりません。

すみません、メッセージリソースのプロパティファイルに書き込みたい意図がちょっとわかりません。メッセージリソースのプロパティファイルを使うよりよい実装法があるのではないかと思いますので、ちょっと教えてもらえませんでしょうか?
message-resources内で定義するよりか
作業フォルダを取得して
プロパティファイルのやり取りを行う方法を見つけました。

落ち着けばよかったものを・・・。
またお騒がせして申し訳ない・・・。
また1つ質疑を投げたいと思います
logic:notEmptyタグの間にlogic:iterateタグを設置しているのにもかかわらず
1回目の表示でlogic:iterateタグの間にコレクションとして
リストが表示が出来ているのですが
2回目に表示をしようとすると途中までしか表示しません。

何かよい解決策があればお願いします。
#本当にやっつけ仕事は洒落にならんヽ(#´皿`)ノ=3
うーん・・・きちんと表示されると思いますがのぉ。。。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/struts-html" prefix="html"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%java.util.Map map = new java.util.HashMap();
java.util.List list = new java.util.ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
list.add("9");
list.add("10");
map.put("list", list);
map.put("emptyList",new java.util.ArrayList());
pageContext.setAttribute("map",map,PageContext.PAGE_SCOPE);
%>
<logic:notEmpty name="map" property="list">
<P>list is not empty.
<P>The first.
<BR>
<logic:iterate name="map" property="list" id="listValue">
<bean:write name="listValue"/>
<BR>
</logic:iterate>
<P>The second.
<BR>
<logic:iterate name="map" property="list" id="listValue">
<bean:write name="listValue"/>
<BR>
</logic:iterate>
</logic:notEmpty>
<logic:notEmpty name="map" property="emptyList">
<P>emptyList is not empty.
<BR>
<logic:iterate name="map" id="emptyList" id="listValue">
<bean:write name="listValue"/>
<BR>
</logic:iterate>
</logic:notEmpty>

</body>
</html>

ログインすると、残り5件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Struts!!!!! 更新情報

Struts!!!!!のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。