- PR -

Struts JSP にて画面に複数(日本語)ボタンを作成したい

投稿者投稿内容
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2007-03-30 09:50
お世話になります。

表題の件で、皆様のお知恵を拝借したく。
【環境】
Eclipse 3.2.0
Tomcat-5.0.28
struts-1.2.7
Windows XP Service Pack 1
jdk 1.4.2_04

【やりたいこと】
Struts JSP にて1画面に複数ボタンを追加したい
( そのボタン名称を日本語にしたい )

【やったこと】
こちらのサイトを参考に
サンプルソースを作りました。
ボタン名を英語にするとうまく処理がいくのですが、
日本語 ( "送信"という文字列 ) にするとExceptionが発生します。

【もの凄くソースをはしょるとこんな感じです】
最初の JSP 画面のサブミット記述箇所
コード:
<html:form action="/ExLookupDispatch">  <%-- (1)property属性を指定 --%>
  <html:submit property="exeMethod">
    <%-- (2)メッセージ・リソースファイルの値を表示 --%>
    <bean:message key="submit.a"/>
  </html:submit>



受取る Java

コード:
  //(3)getKeyMethodMapメソッドを宣言
  protected Map getKeyMethodMap() {
    Map map = new HashMap();
    map.put("submit.a", "methodA");
    map.put("submit.b", "methodB");
    return map;
  }

  //(4)「送信A」ボタンクリック時に実行されるmethodAメソッドを宣言
  public ActionForward methodA(ActionMapping mapping, 
         ActionForm form,
         HttpServletRequest req, 
         HttpServletResponse res) {

    return (mapping.findForward("methodA")); 

  }



application.properties ファイル ( 変換済み )
submit.a=\u9001\u4fe1

その他、struts-config.xml などは割愛 ( 英語にすると上手くいくので問題ないと思っております )

【障害の想定と対策方針】
Exception の中身ですが、

javax.servlet.ServletException: Action[/ExLookupDispatch]でキーメソッドマップの中にリソース ???M が見つかりません
at org.apache.struts.actions.LookupDispatchAction.getLookupMapName(LookupDispatchAction.java:240)
以下続く。。。

となっております。
多分「〜の中にリソース ???M が〜」という所が「送信」という文字列なのでしょうが、
ここの変換が上手くいっていないためかな、と思います。

これは想定ですが、リソースファイルの中の文字列を Struts かサーブレットかわかりませんが、
どこかで変換しようとしたのだが、その変換が上手くいっていないのかな、と思っております。

なので、対策としては文字コードの設定だと思うのですが、どこの文字コードを
変更すればいいのかがわかりません。

ちなみに、文字コード設定は
Eclipse にてフォルダ単位での文字コード・・・コンテナーから継承 ( MS932 )
application.propertiesファイル・・・・・・・ISO-8859-1
対象 JSP の文字コード ・・・・・・・・・・・Shift-JIS ( Windows-31J も試しましたが NG )
となっております。

ボタン名称を英語にすれば問題なく動くので、最悪それかな、と思っておりますが
なんだか悔しいので解決したいと思っております。
宜しくお願いいたします。
未記入
会議室デビュー日: 2007/03/28
投稿数: 19
投稿日時: 2007-03-30 11:01
引用:

小僧さんの書き込み (2007-03-30 09:50) より:
お世話になります。

表題の件で、皆様のお知恵を拝借したく。
【環境】
Eclipse 3.2.0
Tomcat-5.0.28
struts-1.2.7
Windows XP Service Pack 1
jdk 1.4.2_04

【やりたいこと】
Struts JSP にて1画面に複数ボタンを追加したい
( そのボタン名称を日本語にしたい )

【やったこと】
こちらのサイトを参考に
サンプルソースを作りました。
ボタン名を英語にするとうまく処理がいくのですが、
日本語 ( "送信"という文字列 ) にするとExceptionが発生します。

【もの凄くソースをはしょるとこんな感じです】
最初の JSP 画面のサブミット記述箇所
コード:
<html:form action="/ExLookupDispatch">  <%-- (1)property属性を指定 --%>
  <html:submit property="exeMethod">
    <%-- (2)メッセージ・リソースファイルの値を表示 --%>
    <bean:message key="submit.a"/>
  </html:submit>



受取る Java

コード:
  //(3)getKeyMethodMapメソッドを宣言
  protected Map getKeyMethodMap() {
    Map map = new HashMap();
    map.put("submit.a", "methodA");
    map.put("submit.b", "methodB");
    return map;
  }

  //(4)「送信A」ボタンクリック時に実行されるmethodAメソッドを宣言
  public ActionForward methodA(ActionMapping mapping, 
         ActionForm form,
         HttpServletRequest req, 
         HttpServletResponse res) {

    return (mapping.findForward("methodA")); 

  }



application.properties ファイル ( 変換済み )
submit.a=u9001u4fe1

その他、struts-config.xml などは割愛 ( 英語にすると上手くいくので問題ないと思っております )

【障害の想定と対策方針】
Exception の中身ですが、

javax.servlet.ServletException: Action[/ExLookupDispatch]でキーメソッドマップの中にリソース ???M が見つかりません
at org.apache.struts.actions.LookupDispatchAction.getLookupMapName(LookupDispatchAction.java:240)
以下続く。。。

となっております。
多分「〜の中にリソース ???M が〜」という所が「送信」という文字列なのでしょうが、
ここの変換が上手くいっていないためかな、と思います。

これは想定ですが、リソースファイルの中の文字列を Struts かサーブレットかわかりませんが、
どこかで変換しようとしたのだが、その変換が上手くいっていないのかな、と思っております。

なので、対策としては文字コードの設定だと思うのですが、どこの文字コードを
変更すればいいのかがわかりません。

ちなみに、文字コード設定は
Eclipse にてフォルダ単位での文字コード・・・コンテナーから継承 ( MS932 )
application.propertiesファイル・・・・・・・ISO-8859-1
対象 JSP の文字コード ・・・・・・・・・・・Shift-JIS ( Windows-31J も試しましたが NG )
となっております。

ボタン名称を英語にすれば問題なく動くので、最悪それかな、と思っておりますが
なんだか悔しいので解決したいと思っております。
宜しくお願いいたします。




参考にした所にソースが載ってきますがそちらのほうは実行してみたのでしょうか??
参考にするだけではなく載っているサンプルも実行することは大切だと思います^^

小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2007-03-30 11:04
返信ありがとうございます。

> 参考にした所にソースが載ってきますが
> そちらのほうは実行してみたのでしょうか??
???
参考にした所のソースをコピーして自分の環境で実行した結果、
日本語で上手くいかないので質問させていただきました。
という事で回答になっているでしょうか?

一応、英語では上手く言っているのでプログラム自体に不備はないという
認識なのですが。

宜しくお願いいたします。

未記入
会議室デビュー日: 2007/03/28
投稿数: 19
投稿日時: 2007-03-30 11:49
引用:

小僧さんの書き込み (2007-03-30 11:04) より:
返信ありがとうございます。

> 参考にした所にソースが載ってきますが
> そちらのほうは実行してみたのでしょうか??
???
参考にした所のソースをコピーして自分の環境で実行した結果、
日本語で上手くいかないので質問させていただきました。
という事で回答になっているでしょうか?

一応、英語では上手く言っているのでプログラム自体に不備はないという
認識なのですが。

宜しくお願いいたします。




すいません。あくまで参考にしただけだと解釈してしまいました。

どこを修正したのかがわからないとたぶん答えは返ってこないと思いますよ^^
そうすればもっと返信があるのでは??
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2007-03-30 11:54
返信ありがとうございます。

> どこを修正したのかがわからないと
> たぶん答えは返ってこないと思いますよ^^
サイトに載っているコードをそのまま実行したのですが、
私の環境では日本語が出なかったのです。
なので「どこを修正したか」というのではなく
「どこも修正していないのですが、上手く行きません」という内容なのですが。
で、「文字コード絡みっぽいのですがどこだかわかりません」という質問なのですが。
認識あっていますでしょうか?

宜しくお願いいたします。
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2007-03-30 12:07
引用:

小僧さんの書き込み (2007-03-30 09:50) より:
【やりたいこと】
Struts JSP にて1画面に複数ボタンを追加したい
( そのボタン名称を日本語にしたい )



なんでボタン名称を日本語にしたいんですか?
ボタン名称を日本語にするとは具体的にどういった作業の事を指していますか?
武澤
常連さん
会議室デビュー日: 2004/09/27
投稿数: 31
投稿日時: 2007-03-30 12:45
Servlet側で日本語処理をしていますか?
参考にしているサイトを見ましたが、
「●Struts−8.アクション・フォームBeanの日本語処理」
でフィルタ処理していますよ。

※ちゃんと日本語エンコードのフィルタ処理してたら、ごめんなさい。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2007-03-30 13:25
武澤さま
> Servlet側で日本語処理をしていますか?
これでした。。。
すいません、チェックミスでした。

お陰様で、無事ボタン名に日本語が使えることが出来ました。
お手数をおかけしました。ありがとうございます。

さるさま
> なんでボタン名称を日本語にしたいんですか?
なんでって。。。
「仕様だから」じゃダメですか?
「Insert」というボタンよりは「登録」と書いてある方が
分かりやすいと思ったので、日本語を使いたかったのですが。

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