- PR -

LookupDispatchActionでの日本語使用

投稿者投稿内容
siggy
常連さん
会議室デビュー日: 2002/08/14
投稿数: 23
投稿日時: 2003-08-26 12:52
struts1.1にて開発を行っているのですが
あるフォームにボタンを2つ使用いたいためにLookupDispatchActionを
使用することにしました。

<html:submit property="method">
<bean:message key="register"/>
</html:submit>

にてボタンを指定して<bean:message>のkey属性に
application.propertiesファイルに指定したkeyを使うのですが
ここのkeyに対応した値にascii文字以外を指定すると

Request[/RegisterApp] does not contain handler parameter named method

というエラーがでます。

native2ascii化した文字列でも同様にエラーが発生します。
対処方法をご存知の方、ご教示願います。
Dandan
常連さん
会議室デビュー日: 2002/01/17
投稿数: 25
投稿日時: 2003-08-26 17:39
エラーの通りです。

struts-config.xmlの<action>要素のparameter属性に"method"が無いよ、とのことです。
<submit property="xxx">と<action parameter="xxx">をあわせる必要があります。

(e.g.)
コード:

<action
attribute="loginForm"
input="/form/login.jsp"
name="loginForm"
parameter="method"
path="/login"
type="com.foo.account.LoginAction">
<forward name="success" path="/form/main.jsp" />
</action>



[修正文]
……と思ったら答えが勘違いでしたね。
keyに日本語とか入れたら…という話ですよね。
やったこと無いので何とも…。

getKeyMethodMapでマッピングする文字をutf-8で記述とか、地道なデバッグが必要そうです。

[ メッセージ編集済み 編集者: Dandan 編集日時 2003-08-26 18:00 ]

[ メッセージ編集済み 編集者: Dandan 編集日時 2003-08-26 18:01 ]
tm
会議室デビュー日: 2003/09/01
投稿数: 2
投稿日時: 2003-09-01 06:33
私もちょうど同様のエラーで、少し困っています。。
message-resourcesのkeyにasciiのみを指定した際は、正常にフォワー
ドできるのですが、native2asciiでUnicode escapeしたものについて
はsiggyさんと同様にHTTP応答コード400で以下のようなメッセージが
戻ります。

message Request[/pickupMethod] does not contain handler parameter named action

[jsp側]
<html:submit property="action">
<bean:message key="button.previous"/>
</html:submit>
<html:submit property="action">
<bean:message key="button.next"/>
</html:submit>

view側のjspにはすべてUTF-8で記述しています。
なにか情報をお持ちの方、ご教授ください。
takai
会議室デビュー日: 2003/05/08
投稿数: 3
投稿日時: 2003-09-03 15:46
tomcat4.1 + struts1.1の環境で私も同様の現象に遭遇しました。

そのときはpageディレクティブでの文字コード指定をShift_JISからEUC-JPにしてみたところ、
動作するようになりました。

深く追いかけるつもりはありませんのでナニですが、
問題はたぶんそのあたりにあるのではないかと思います。
PAL
ベテラン
会議室デビュー日: 2002/11/14
投稿数: 63
投稿日時: 2003-09-04 14:29
えっと、私の所では特に問題なく使用できています。
で、ソースですがLookupDispatchActionは使用していません。
普通に記述して、propertyと同じsetterがあるDynaValidatorFormを用意して・・・・
とやれば
BeanUtils.getProperty(form, "submitボタンのproperty")
として取得できます。

ところで、LookupDispatchActionってどう使用するのでしょう?
実は分かってません。^^;
引用:

siggy 投稿日時: 2003-08-26 12:52
--------------------------------------------------------------------------------
struts1.1にて開発を行っているのですが
あるフォームにボタンを2つ使用いたいためにLookupDispatchActionを
使用することにしました。

<html:submit property="method">
<bean:message key="register"/>
</html:submit>

にてボタンを指定して<bean:message>のkey属性に
application.propertiesファイルに指定したkeyを使うのですが
ここのkeyに対応した値にascii文字以外を指定すると

Request[/RegisterApp] does not contain handler parameter named method

というエラーがでます。

roushi
常連さん
会議室デビュー日: 2003/07/18
投稿数: 28
投稿日時: 2003-10-21 16:16
こんにちは。

おそらくJSPで日本語のボタンを扱う場合は
リクエストパラメータとして送信される値も日本語になっていると思います。
つまり受信側のActionServlet側のエンコードを指定してければ
文字化けを起こしてしまう恐れがあるのではないでしょうか。
コガちゃん
会議室デビュー日: 2003/12/13
投稿数: 10
投稿日時: 2003-12-13 12:22
1.まず、RequestProcessorのサブクラスをつくって、エンコーディングする処理をいれてコンパイルします
package study;
import org.apache.struts.action.RequestProcessor;
import javax.servlet.http.*;
public class MyRequestProcessor extends RequestProcessor{
public boolean processPreprocess(HttpServletRequest request,
HttpServletResponse response){
try{
request.setCharacterEncoding("Shift_JIS");
}catch(Exception e){
System.err.println("MyRequestProcessor#processPreprocess:"
+ " fail to setCharacterEncoding");
}
return true;
}
}

2.struts-config.xmlに作ったクラスを使用する設定をいれます
<controller processorClass="study.MyRequestProcessor" />

3.さーばのリスタートをすればトラブル解消です
れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2005-08-12 10:31
おはようございます。
先日から、悩んでいるので、以下のとおりにやってみたのですが、<controller processorClass="study.MyRequestProcessor" />
のように、struts-configに新しく作ったり、既存のものと交換するとactionが実行できないというエラーが出ます。どうしたらいいでしょうか?

試せる手は尽くしたのですが。。。。
よろしくお願いします。

スキルアップ/キャリアアップ(JOB@IT)