Thymeleaf查询参数解析异常:输出字符串对象而非实际值求助
问题解决:Thymeleaf 2.1.4打印URL查询参数显示数组对象地址
问题根源:Thymeleaf中
${param.xxx}返回的是字符串数组(HTTP协议允许同一个参数名传递多个值),直接打印数组会输出其默认的toString结果,也就是你看到的[Ljava.lang.String;@767a8ed5。解决方案:
- 直接取数组第一个元素:因为你只传递了一个
message参数,用下标[0]获取单个值即可,修改后的代码如下:<p th:text="${param.message[0]}"></p> - 带默认值的安全写法:如果担心参数不存在导致空指针,可结合Thymeleaf的字符串工具类处理:
<p th:text="${#strings.defaultString(param.message[0], '无消息')}"></p>
- 直接取数组第一个元素:因为你只传递了一个
扩展场景验证:若URL中传递多个同名参数(比如
http://localhost:8000/about?message=Hello&message=World),${param.message}会返回包含两个元素的数组,此时可通过遍历输出所有值:<div th:each="msg : ${param.message}"> <p th:text="${msg}"></p> </div>
内容的提问来源于stack exchange,提问作者Akhmad Zaki
相关产品推荐
相关产品推荐

