百里香叶中的条件 th:href 参数



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

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

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

/search/type?parameter1=-1

干净整洁

/search/type

如何实现这一点?我试过这个:

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

但此表达式会导致异常:

org.thymeleaf.exceptions.TemplateProcessingException: 无法解析 作为表达式:

我试过这个:

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

但是结果仍然不能接受:

/search/type?parameter1=

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

看起来我做了更多的研究并找到了一种方法。关键词是:预处理。这是链接。因此,就我而言,以下表达式有效:

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

简短解释:用双下划线__(${parameter1}=='-1'?','parameter1=${parameter1})__将表达式括起来,然后仅当表达式的计算结果为非空字符串时,才会添加带括号的表达式。对于 url 参数,','计算结果为两个空参数,并且不添加。

最新更新