[cubby-user:146] Cubby1.1.5のFormTagの挙動について
Atsumi Hayashi
[E-MAIL ADDRESS DELETED]
2009年 5月 29日 (金) 17:19:51 JST
お世話になっております。林@グルージェントです。
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 メーリングリストの案内