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?
Request parameters can be easily accessed in Thymeleaf views. Request parameters are passed from the client to server like: https://example.com/query?q=Thymeleaf+Is+Great! In the above example if parameter q is not present, empty string will be displayed in the above paragraph otherwise the value of q will be shown.
#{} is used for message (i18n) expressions. Used to retrieve locale-specific messages from external sources.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With