[CUBBY-218] URLからバインドされるパラメータがデコードされない Created: 2009-04-10  Updated: 2009-08-24  Resolved: 2009-04-15

Status: Closed
Project: Cubby
Component/s: Core
Affects Version/s: 1.1.4, 2.0.0-beta1
Fix Version/s: 1.1.5, 2.0.0-beta2

Type: Bug Priority: Major
Reporter: baba Assignee: baba
Resolution: Fixed Votes: 0
Labels: None


 Description   

[cubby-user:127] URLの半角スペースの扱い

hoge.mayaa
<t:link m:id="hoge_anchor" actionClass="hoge.action.HogeAction"
actionMethod="index" tag="a" attr="href">
<t:param name="name" value="${name}" />
<m:doBody />
</t:link>

HogeAction
public class HogeAction extends ...
@@RequestParameter
public String name;
@Path("

{name,[^/]+}

")
public ActionResult index() {

上記でnameの値が半角スペースを含む場合、
URLは半角スペースが「+」にエンコードされたURLが出力されます。

しかしそのURLにアクセスすることで呼ばれるHogeActionに
設定されたnameには、「」は「」のまま設定されるため現状では
無理やり「+」を半角スペースに置換することで対応しています。



 Comments   
Comment by baba [ 2009-04-15 ]

f:url でエンコードする部分も修正

Comment by baba [ 2009-04-15 ]

URL ボディ部分の半角スペースを「+」にエンコードしているのが原因

  • Cubby は HttpServletRequest#getServletPath() からパスを取得している
  • これはデコードされた文字列を返すが、送信される URL に + が含まれていてもこの記号はデコードされない

PathResolverImpl でボディ部分をエンコード・デコードしている部分を修正

  • エンコード時には半角スペースを %20 としてエンコードする
  • デコードは行わないでサーブレットコンテナに任せる
Generated at Fri Apr 19 05:19:08 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.