url地址 参数 带 参数 注意事项 , chain , redirect , redirectAction

时间:2021-04-21 22:58:11

当 url  地址中含有  参数 时 ,若参数值是一个 含有 参数的 地址时 , 应警惕 ,如

index/goIndex!login?backUrl=/shop/goShop!go?a1=1&a2=2&a3=3;

    当参数backUrl 的值 仍然含有 参数时 , 根据url  解析方式 , 会出现 如下情况

      url 地址:index/goIndex!login

      参数 backUrl :  /shop/goshop!go?a1=1

      参数 a2 : 2

      参数 a3 : 3

  会解析成  3个参数 ,而并不是 我们 想要 的 backUrl=/shop/goShop!go?a1=1&a2=2&a3=3;  这是因为url 解析默认以& 参数分隔符 ,所以在出现一个& 时 ,

  会把& 的以前的当成一个参数 。 解决方式 很多 ,最好不要 使用 拼接url  的方式 传参,尤其是参数值仍然为 地址时。js 中可以使用 异步ajax ,或者对参数 编码。

  获得使用 from 表单提交 参数。

1.  使用 chain  和 redirectAction

    写法 :

      <result name="success" type="chain">  或者 redictAction

        <param name="namespace">/go</param>

        <param name="actionName">goIndex</param>

        <param name="method">init</param>   <!--namespace和method 都可以省略 ,默认当前和excute;

        <param name="backurl">cc</param>

      </result>

       主要注意: 当使用 chain  时 由于某种原因 , 可能需要 当前 action  必须配置 backurl 属性和getter/setter方法, 才能在下个action 中

       获得 backurl 的值。 使用 redirectAction  则不需要在 当前aciton 中必须配置 backurl 属性。

       使用 redirect 则是直接写地址 <result type="redirect" name="success">/go/goIndex!init.action?backurl=cc</result>