所以我的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=
那么从网址中消除不良参数的正确方法是什么?
答案 0 :(得分:2)
看起来我做了更多研究并找到了办法。 关键词是:预处理。 This is the link. 因此,对于我的目的,以下表达式有效:
th:href="@{'/search/'+${searchType}(__(${parameter1}=='-1'?','parameter1=${parameter1})__,__(${parameter2}=='-1'?','parameter2=${parameter2})__)}"
简短说明:用双下划线__(${parameter1}=='-1'?','parameter1=${parameter1})__
包围表达式,然后只有在计算为非空字符串时才会添加包围的表达式。在url参数的情况下,','
计算为两个空参数而不是添加。