So I have an element in my Thymeleaf template which has a link looking like that:
th:href="@{'/search/'+${searchType}(parameter1=${parameter1}, ... parameter10=${parameter10})}"
According to the current implementation the parameter1...10
can have values that I don't want to include in the href
. For example, if it's id, it can be -1, which means that no id chosen, so this parameter have to be omitted to avoid clattering the url string, so instead of
/search/type?parameter1=-1
get just clean
/search/type
How this can be achieved? I tried this:
th:href="@{'/search/'+${searchType}((${parameter1}=='-1'?''parameter1=${parameter1}))}"
But this expression causes exception:
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:
I tried this:
th:href="@{'/search/'+${searchType}(parameter1=(${parameter1}=='-1'?'':${parameter1}))}"
But then the result is still not acceptable:
/search/type?parameter1=
So what is the correct way to eliminate undesirable parameters from the url?
Looks like I did more research and found a way. The key word is: preprocessing. This is the link. So for my purposes the following expression works:
th:href="@{'/search/'+${searchType}(__(${parameter1}=='-1'?','parameter1=${parameter1})__,__(${parameter2}=='-1'?','parameter2=${parameter2})__)}"
Short explanation: surround the expression with double underscores __(${parameter1}=='-1'?','parameter1=${parameter1})__
, and then the surrounded expression will only be added if it evaluates to non-empty string. In the case of url parameters ','
evaluates to two empty parameters and not added.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.