You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Thymeleaf实现双条件搜索并解决th:value失效问题

搜索功能问题修复与双条件搜索实现

一、th:value失效问题解决

先看你代码里的几个明显问题:

  1. 第二个输入标签的th:value语法错误,未闭合引号和括号:th:value="${search} name="search" 这里缺少闭合的"和",导致标签解析失败。
  2. 两个输入框的name都设为search,提交时参数会互相覆盖,且后端仅接收一个参数,回显时用同一个${search}也无法分别对应两个输入框。
  3. 前端表单的action是/home/checkorcancelapplication,但后端控制器的请求路径是/home/checkapplication,路径不匹配,请求根本无法到达处理逻辑。

修改后的前端代码

<form th:action="@{/home/checkorcancelapplication}" method="post" autocomplete="off">
  <li>申请编号 :
    <input type="text" th:value="${applicationNo}" name="applicationNo" >
  </li>
    
  <li>手机号码 : 
    <input type="text" th:value="${phoneNumber}" name="phoneNumber" >
  </li>
  <button type="submit" value="Search" class="searchbutton" onclick="printmsg()">搜索</button>
</form>

修改后的后端控制器代码

@RequestMapping(value="/home/checkorcancelapplication", method = RequestMethod.POST)
public String maintainUserEnquiry(ModelMap model, 
                                 @RequestParam(value = "applicationNo", required = false) String applicationNo,
                                 @RequestParam(value = "phoneNumber", required = false) String phoneNumber) throws Exception {
    Application inclass = null;
    // 只要有一个参数不为空就执行搜索
    if ((applicationNo != null && !applicationNo.isEmpty()) || (phoneNumber != null && !phoneNumber.isEmpty())) {
        // 根据业务需求调用对应的双条件查询方法
        inclass = CheckApplicationService.findByApplicationNoOrPhoneNumber(applicationNo, phoneNumber);
        // 把用户输入的参数放回模型,用于页面回显
        model.addAttribute("applicationNo", applicationNo);
        model.addAttribute("phoneNumber", phoneNumber);
    }
    model.addAttribute("inclass", inclass);
    return "home/checkapplication";
}

二、双条件搜索实现步骤

  1. 前端参数区分:给两个输入框设置不同的name,后端用@RequestParam分别接收,避免参数覆盖。
  2. 业务层实现多条件查询:在Service层编写支持双条件的方法,比如:
    • 同时匹配申请编号和手机号:findByApplicationNoAndPhoneNumber(String appNo, String phone)
    • 匹配任一条件:findByApplicationNoOrPhoneNumber(String appNo, String phone)
      如果用JPA,直接按规则写方法名就能自动生成查询,也可以自定义JPQL实现更复杂的逻辑。
  3. 参数回显处理:把用户提交的查询参数重新添加到Model中,这样前端的th:value就能获取到对应的值,搜索后页面会保留用户输入的内容。

内容的提问来源于stack exchange,提问作者ZZZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:57:26