[Seasar-user:3392] form actionの遷移先指定について

takada takeshi [E-MAIL ADDRESS DELETED]
2006年 3月 18日 (土) 14:26:00 JST


みなさま はじめまして。
つい先週よりS2関連プロダクトにふれはじめ、
その技術はもちろん、かわいらしいシーサーのイラストにも
すっかり心を奪われた高田と申します。

ただいま青い本片手に勉強中の身ですが、
どうぞよろしくお願いいたします。


ところで早速で恐縮なのですが、
現在Apacheのmod_rewriteを使ったURI操作と
S2JSFによるフォームアクションの動作の連携について
質問よろしいでしょうか。


基本環境は以下の通りで、

 ・S2Container 2.3.7
 ・Tomcat 4.1.31
 ・Apache 2.0.54-10
 
ApacheとTomcatの連携には mod_jk2 を使用し
workers2.properties では次のように設定しています。

====================
[uri:/*.jsp]
[uri:/*.do]
[uri:/servlet/*]
[uri:/*.html]
====================

また作成しているアプリケーションは
S2JSF Blank 1.0.13をベースとして
$TOMCAT_HOME/webapps 以下に "test"という名で配置し、
S2JSF Example 1.0.13 よりファイルをコピー・修正
しながらテストしています。

現在の所のファイルシステム構成は
======================
$TOMCAT_HOME/webapps
  test/
    a/
    b/
    c/
    WEB-INF/
======================
という状況です。



実現したいことは、ディクレトリへのアクセスを
サブドメインとして受けるWEBアプリです。

Apacheのhttpd.confでは
=======================================================
RewriteEngine On
RewriteCond %{HTTP_HOST} ^((a|b|c|)+)\.test\.jp\(:80)?
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.test\.jp(.*) /$1$2 [PT,L]
=======================================================
という設定を行い、
例えば http://a.test.jp/ へのアクセスは
DocumentRoot以下 aディレクトリを参照するように
設定しました。

ですので、http://a.test.jp/foo.html を呼ぶと
$TOMCAT_HOME/webapps/test/a/foo.htmlが実行されます。


ここでいよいよS2JSFを試そうと、
exampleにあるadd.htmlをaディレクトリに設置してみたところ
http://a.test.jp/add.html にアクセスすることで
無事足し算プログラムのフォームが表示されました。

しかし、submitボタンを押したところ
http://a.test.jp/a/foo.html
に遷移し、not foundのエラーとなってしまいました。

ロジックやDTO関連のソースは省略いたしますが、
add.htmlは以下のようになっています。
==================================================
<html xmlns:m="http://www.seasar.org/maya">

<form id="add">
<span m:inject="h:messages" m:globalOnly="false" m:showDetail="true"/>
<input type="text" m:value="#{addDto.arg1}"/> + 
<input type="text" m:value="#{addDto.arg2}"/> = 
<span m:value="#{addDto.result}"/>
<input type="submit" value="calculate" m:action="#{addAction.calculate}"/>
</form>
==================================================


詳細な仕様を把握しないままの推測で申し訳ございませんが、
ブラウザ上で http://a.test.jp/add.html にアクセスし
「ソースを表示」を実行したところ
formタグが
=============================================
<form id="add" name="add" method="post" action="/a/add.html" 
enctype="application/x-www-form-urlencoded">
=============================================
のように記述されておりましたので
S2JSFでは自動的にform actionを自画面の
REQUEST URIか何かを挿入してくれると
考えてよろしいでしょうか。

またここで質問なのですが、
この場合 actionを "/add.html" のように明示できれば
正しい遷移となると思うのですが、そのように
actionを手動で設定することはできるのでしょうか。


test/WEB-INF/faces-config.xml では以下のように
設定しておりますが、<to-view-id>を
<to-view-id>add.html</to-view-id>
としてみても状況は同じでした。
==============================================
<navigation-rule>
  <navigation-case>
    <from-outcome>add</from-outcome>
      <to-view-id>/a/add.html</to-view-id>
      <redirect/>
  </navigation-case>
</navigation-rule>
==============================================


長々とした説明で失礼いたしましたが、
どうぞご教授いただければ幸いです。


# 先日、MLの主旨を勘違いして同内容での質問を
# mayaa-user MLに送らせていただきました。
# 両方を購読されている方がいらっしゃいましたら、
# 重複した内容での投稿お詫びいたします。


高田武 takada takeshi
[E-MAIL ADDRESS DELETED]

_________________________________________________________________
パソコンでも携帯電話でも使える 「MSN Hotmail」 
http://promotion.msn.co.jp/hotmail/ 




Seasar-user メーリングリストの案内