Java Thymeleaf th:href参数中的条件
我的ThymileAF模板中有一个元素,它有一个如下链接:Java Thymeleaf th:href参数中的条件,java,spring,thymeleaf,Java,Spring,Thymeleaf,我的ThymileAF模板中有一个元素,它有一个如下链接: th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}" 根据当前的实现,参数1…10可以包含我不想包含在href中的值。例如,如果它是id,那么它可以是-1,这意味着没有选择id,因此必须省略此参数以避免url字符串发出咔哒声,而不是 /search/type?参数1=-1 洗干净 /search/t
th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}"
根据当前的实现,参数1…10
可以包含我不想包含在href
中的值。例如,如果它是id,那么它可以是-1,这意味着没有选择id,因此必须省略此参数以避免url字符串发出咔哒声,而不是
/search/type?参数1=-1
洗干净
/search/type
如何做到这一点?
我试过这个:
th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"
th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"
但此表达式会导致异常:
org.thymeleaf.exceptions.TemplateProcessingException:无法分析
作为表达:
我试过这个:
th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"
th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"
但结果仍然不可接受:
/search/type?参数1=
那么,从url中删除不需要的参数的正确方法是什么呢?看起来我做了更多的研究并找到了一种方法。 关键词是:预处理。 因此,出于我的目的,以下表达式起作用:
th:href="@{'/search/'+${searchType}(__(${parameter1}=='-1'?','parameter1=${parameter1})__,__(${parameter2}=='-1'?','parameter2=${parameter2})__)}"
简短说明:用双下划线
uuuuu(${parameter1}='-1'?','parameter1=${parameter1})uuuuuuu
环绕表达式,然后仅当其计算结果为非空字符串时才会添加环绕表达式。在url参数'的情况下,'
计算为两个空参数且未添加。以下是指向文档的链接:(链接论坛中的一个已过时)