简体   繁体   中英

Conditions in Thymeleaf th:href parameter

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM