java - Spring Thymeleaf 缩短 url (form - get) 参数

标签 java spring thymeleaf

当前状态:

https://localhost:8443/workaround/?query=dasda&atn=s&filterSoftwareType=ANY ......

期望的状态: https://localhost:8443/workaround/ ?q=dasda&atn=s&fst=ANY.....

使用 q 代替 query 并使用 fst 代替 filterSoftwareType 来缩短 url

我的 thymeleaf html 看起来像这样,简短的示例:

<form action="#" class="card card-sm rounded"
                  method="get"
                  th:action="@{${T(com.bisciak.workaround.util.Utils).MAPPING_INDEX}}" th:object="${search}">

     <div class="col">
           <input class="form-control form-control-lg form-control-borderless"
                               placeholder="Search here"
                               style="padding-left: 1rem"
                               th:field="${search.query}" type="search"/>
     </div> etc...

Controller :

  @GetMapping(value = Utils.MAPPING_INDEX, params = "atn=s")
 public ModelAndView indexActionSearch(@ModelAttribute(name = "s") Optional<Search> search .....

搜索对象具有查询等属性,但我肯定不想重命名这些属性!通过我只想使用短版本 URL 的代码来命名将是非常可怕的。

有人知道如何做到这一点吗?我已经尝试过输入芽上的名称属性,但没有帮助:/。

我还想将内容保留在表单中,以便自动构建 url。 我还想将其保留为获取而不是帖子,以便用户可以通过 URL 栏中的复制粘贴等轻松共享此链接。通过帖子,他不会看到这一点。

最佳答案

th:field 属性可以轻松地从 Java 对象构建表单,并且字段可以使用相同的名称回发,以便可以将值自动分配回 Java 对象,相同类型,在服务器上。

如果您想要不同的名称,那么您就没有将其用于其预期目的,因此请停止使用它。

如果您查看文档,即章节 7.2 Inputs ,您会看到 th:fields 的作用:

Let’s see now how to add an input to our form:

<input type="text" th:field="*{datePlanted}" />

... In this case (input[type=text]), the above line of code is similar to:

<input type="text" id="datePlanted" name="datePlanted" th:value="*{datePlanted}" />

因此,更改您的代码来执行此操作:

<form ... th:object="${search}">

    <input ... name="q" th:value="*{query}"/>

您是否还需要 id="q" 由您决定。

请注意,如果您使用 th:value="${search.query}",则不需要 th:object="${search}"

关于java - Spring Thymeleaf 缩短 url (form - get) 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56348631/

相关文章:

spring - 是否可以在 Swagger 中使用模型上传 MultipartFile? (在评论 415 Unsupported Media Type Resolved 中)

java - Gradle:依赖顺序如何产生影响?

java - Thymeleaf 没有对象类?

java - 解析模板 [] 时出错,模板可能不存在,或者任何已配置的模板解析器都无法访问该模板

java - GAE 后端/任务队列 - 如何在参数中传递用户凭据?

java - 服务器启动错误 - SQL 语法错误

java - Apache JCI FilesystemAlterationMonitor 在启动时处理现有文件夹内容的更改

java - 基本的随机掷骰子 Java

java - RabbitMQ 向另一个消费者发出请求

java - Thymeleaf 3 URL 解析不适​​用于 Spring Boot 4 + Spring Security