java - Thymeleaf 中的条件 th :href parameter

标签 java spring thymeleaf

所以我的 Thymeleaf 模板中有一个元素,它有一个看起来像这样的链接:

th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}"

根据当前的实现,parameter1...10 可以具有我不想包含在 href 中的值。例如,如果它是 id,它可以是 -1,这意味着没有选择 id,所以这个参数必须被省略以避免 url 字符串困惑,所以而不是

/search/type?parameter1=-1

干干净净

/搜索/类型

如何实现? 我试过这个:

th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"

但是这个表达式会导致异常:

org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:

我试过这个:

th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"

但是结果还是不行:

/search/type?parameter1=

那么从 url 中消除不需要的参数的正确方法是什么?

最佳答案

看来我做了更多研究并找到了方法。 关键词是:预处理。 This is the link. 因此,出于我的目的,以下表达式有效:

th:href="@{'/search/'+${searchType}(__(${parameter1}=='-1'?','parameter1=${parameter1})__,__(${parameter2}=='-1'?','parameter2=${parameter2})__)}"

简短说明:用双下划线包围表达式__(${parameter1}=='-1'?','parameter1=${parameter1})__,然后包围的表达式将只有在计算结果为非空字符串时才添加。在 url 参数的情况下,',' 计算为两个空参数且未添加。

关于java - Thymeleaf 中的条件 th :href parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174524/

相关文章:

java - 如何为其他泛型类声明抽象泛型父类(super class)?

java - PBEWITHSHA256AND128BITAES-CBC-BC 的填充是什么

java - Spring/Hibernate CRUD 不工作(MySQL)

java - Spring 启动: How to add new Datasource at runtime

spring-boot - 如何在 thymeleaf 模板名称处发送 html 内容

java - thymeleaf 变化变量

java - Spring 启动 thymeleaf : Unable to pick up templates from sub-folders under resources/templates

java - marker.isVisible 为 true,但没有显示任何标记

java.time 相当于 Joda-Time `withTimeAtStartOfDay` ? (获取当天的第一刻)

java - 运行依赖于 WebSphere 中定义的资源的 JUnit 测试