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

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 [ 15/Apr/09 ]

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

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

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

  • エンコード時には半角スペースを %20 としてエンコードする
  • デコードは行わないでサーブレットコンテナに任せる
Comment by baba [ 15/Apr/09 ]

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

Generated at Sat Oct 19 13:29:27 JST 2019 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.