Thymeleaf的条件:href参数

时间:2017-04-02 23:10:37

标签: java spring thymeleaf

所以我的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=

那么从网址中消除不良参数的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

相关问题