Grails - 网址中的%252F

时间:2016-04-12 16:02:19

标签: grails

我正在使用spring security插件登录应用程序。 spring security具有默认的auth.gsp页面用于登录。我创建了自己的auth.gsp页面以添加其他内容

auth.gsp

<g:form action='${postUrl.encodeAsURL()}' method='POST' id='loginForm'  autocomplete='off' class="login-form">
            <g:textField class="field" name="username" value="${params.userName}"/>
            <g:passwordField class="field" name="password"/>
            <button>login</button>
            <p class="message"><a href="elb/index">Forgot Password?</a></p>
            <p class="message"><a id="next" name="next" href="#">Have Invitation Code?</a></p>
        </g:form>

问题是,${postUrl}在网址中包含%252F。这是完整的网址:http://localhost:8080/login/%252Flogin%252Fauthenticate/loginForm。我已经尝试了stackoverflow上给出的每个可能的答案,但没有任何效果。

1 个答案:

答案 0 :(得分:2)

尝试使用

<g:form url='${postUrl}' method='POST' id='loginForm'  autocomplete='off' class="login-form">
        <g:textField class="field" name="username" value="${params.userName}"/>
        <g:passwordField class="field" name="password"/>
        <button>login</button>
        <p class="message"><a href="elb/index">Forgot Password?</a></p>
        <p class="message"><a id="next" name="next" href="#">Have Invitation Code?</a></p>
    </g:form>

设置完整网址时,请使用&#39; url&#39;属性。如果您使用&#34; action&#34;,则必须设置操作名称。

也不要使用encodeAsURL()。 encodeAsURL意味着,您想要转义特殊字符,例如&#39; /&#39;,&#39;?&#39;被替换为&#39;%..&#39;实体。