[cubby-user:149] Re: Cubby1.1.5のFormTagの挙動について

Atsumi Hayashi [E-MAIL ADDRESS DELETED]
2009年 6月 1日 (月) 11:22:04 JST


林です。

Tomcat 6.0.18上にROOT.warをデプロイした場合は、
正しくなる事を確認しました。

開発時に利用しているEclipsePluginのsysdeo tomcat pluginで
発生しているようです。

設定で、ContextPath="" or ContextPath="/"としている場合
どちらでも同様に発生します。

Struts -> Cubbyの移植作業を行っている際に発生したので
困っております。

こちらのロジックをStrusのFormTagと同様の処理を行って頂く事は
出来ないでしょうか。

Strutsのパス取得時のロジックは最後に次の様に行っているようです。

return value.startsWith("/") ? value : ("/" + value);

ご検討頂けますでしょうか。


なお、本体で対応して頂けない場合の対処方法としては、
同名クラスを配置する方法でしか対処出来ません。


よろしくお願い致します。



BABA,Yasuyuki <[E-MAIL ADDRESS DELETED]>さん:
> 馬場です
> 
> こちらでは Tomcat 5.5.27 に cubby-examples-1.1.5.war を ROOT.war にリ
> ネームしてデプロイし確認してみましたが、状況は再現できませんでした。
> 
> もし、コンテキストパスを path="/" のように設定しているのであれば、path=
> "" のように変更してみてどのようになるか確認していただけませんか?
> 
> http://ml.seasar.org/archives/cubby-user/2008-March/000027.html
> 
> 
> 
> Atsumi Hayashi さんは書きました:
> > お世話になっております。林@グルージェントです。
> > 
> > 
> > Cubby1.1.5のFormTagの挙動について次の現象がありましたので
> > 御報告させて頂きます。
> > 
> > FormTagの指定時に
> >   actionClass
> >   actionMethod
> > を指定している場合に発生する現象です。
> > 
> > -- jsp側 ---------------------------------
> > 
> > <t:form actionClass="HogeAction" actionMethod="hello" />
> > 
> > -- Action側 ---------------------------------
> > @Path("hoge")
> > public class HogeAction extends Action {
> >     @Path("hello")
> >     public ActionResult hello() {
> >         
> >         return new Forward("hello.html");
> >     }
> > }
> > 
> > としている状態で、ContextPathがルート『 / 』である場合
> > 
> > htmlとして出力される内容が次の様になります。
> > 
> > <form action="//hoge/hello" />
> > 
> > 『 // 』で始まる文字列として出力される為、サブミット時にURLが
> > 
> > http://hoge/hello?aaa=
> > 
> > となります。
> > サーバー名がロストしてしまうため、
> > アプリケーションの実行が出来なくなります。
> > 
> > 
> > これを回避するために、FormTagクラスのdoEndTagメソッドの
> > 
> >     final String contextPath = (String) pageContext.getAttribute(
> >             ATTR_CONTEXT_PATH, PageContext.REQUEST_SCOPE);
> >     if (linkSupport.isLinkable()) {
> >         final String characterEncoding = pageContext.getRequest()
> >                 .getCharacterEncoding();
> >         final String url = contextPath
> >                 + linkSupport.getPath(characterEncoding);
> >         attrs.put("action", url);
> >     }
> > 
> > の部分のurlを生成している部分を変更して頂けないでしょうか。
> > 
> >     String url;
> >     if ("/".equals(contextPath)) {
> >         url = linkSupport.getPath(characterEncoding);
> >     } else {
> >         url = contextPath + linkSupport.getPath(characterEncoding);
> >     }
> >     attrs.put("action", url);
> > 
> > 以上のように修正して頂けると助かります。
> > 
> > 
> > LinkTagについても同様の事が発生すると思います。
> > 
> > 
> > よろしくお願い致します。
> > 
> > _______________________________________________
> > cubby-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/cubby-user
> 
> 
> -- 
> BABA,Yasuyuki
> [E-MAIL ADDRESS DELETED]
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user


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