忽略Thymeleaf中href中的空参数



所以我有这个href:

th:href="@{/apps/role/{pathVar}(pathVar=${var.attribute}, search=${param.search})}"

这工作得很好,但我想通过隐藏搜索参数使url看起来更干净,如果它是空的。

例如:

  • 参数。Search = 'test' =>url ="../apps/role/varAttr?search=test"
  • 参数。搜索= " =>url ="../apps/role/varAttr"

我偶然发现了这篇文章,但是我没有尝试过可以使它为我的目的工作。可能是pathvariable有什么关系,但我真的不知道。

我试着:

th:href="@{/apps/role/{pathVar}(pathVar=${var.attribute}, __(${param.search}=''?','search=${param.search})__)}
th:href="@{/apps/role/{pathVar}(pathVar=${var.attribute}, __(${param.search}=''?,search=${param.search})__)}

以及一些更绝望的尝试。

编辑:我用的是Thymeleaf 3.0.11版本

解决方案:标记的解,对我来说不太管用,但这个行得通。我只是为pathVar省略了第一对"__"

th:with="search=${param.search}"
th:href="@{/apps/role/{pathVar}(pathVar=${var.attribute}, __(${#strings.isEmpty(search)} ? '' : ('search=' + ${search}))__)}"

你可以这样尝试:

<a th:with="search=${param.search}"
th:href="@{/apps/role/__${pathVar}__(pathVar=${var.attribute}, __(${#strings.isEmpty(search)} ? '' : ('search=' + ${search}))__)}">
Click Url
</a>

如果search参数不存在或为空,它不会添加它。*Thymeleaf版本3.0.12。

最新更新