这是我用于登录页面的网址,没有任何请求参数。
http://localhost:8080/signin
这是登录页面的网址,包含错误凭据错误
http://localhost:8080/signin?param.error=bad_credentials
现在我检查下面的param.error
,
<div class="error" th:if="${(param.error != null) and (param.error[0] == 'bad_credentials')}">
当我加载登录页面时,我得到一个SpringEL异常,
Exception evaluating SpringEL expression: "(param.error != null) and (param.error[0] == 'bad_credentials')"
我认为因为加载登录页面时没有请求参数,所以无法找到param.error
。
如何正确检查网址是否包含请求参数?
答案 0 :(得分:1)
我设法做到这一点:)也许这是一个有点丑陋的方式来获得param,但它确实有效。
<div th:with="myMap=${#ctx.requestParameters}">
<span th:if="${#maps.containsKey(myMap, 'param')}" th:text="${'requestParam: ' + #ctx.requestParameters.get('param')[0]}"></span>
</div>
我的地址:http://localhost:8080/thvsjsp/subscribeth?param=something
输出:requestParam: something
HTH
修改强>
这是更好的方法:
<span th:if="${param.abc != null}" th:text="${'requestParam: ' + param.abc[0]}"></span>
请求参数为String[]
,这就是我们需要使用[0]
答案 1 :(得分:1)
这很棘手。在文档中,建议您使用:
${param.containsKey('foo')}
但是它不起作用,当您查看此类的源代码时,它突然变得很清楚:
@Override
public boolean containsKey(final Object key) {
return true;
}
我最终得到:
${param.keySet().contains('foo')}