首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SpringMVC + MyBatis + DWZ 模糊查詢參數接收不到的排查

     編輯:程式設計綜合問答

問題現象

JSP 表單提交 ausCardcode、ausUsername,Controller 中 map.get(...) 取不到值。

根本原因

Map 參數在 SpringMVC 中不會自動綁定請求參數。Map 僅用於向視圖傳遞模型數據,不支持 @RequestParam 綁定。

正確做法

  1. 使用實體類/DTO 接收(推薦):
public class UserQuery {
    private String ausCardcode;
    private String ausUsername;
    // getter/setter
}

@RequestMapping("userInfo")
public String userInfo(UserQuery query, Model model) {
    List<AusUsers> list = ausUsersMapper.allUser(query);
    model.addAttribute("AusUser", list);
    return "system/userInfo";
}
  1. 使用 @RequestParam 逐個接收:
@RequestMapping("userInfo")
public String userInfo(
    @RequestParam(value="ausCardcode", required=false) String cardcode,
    @RequestParam(value="ausUsername", required=false) String username,
    Model model) {
    // 手動構建 Map 或 DTO 傳給 Mapper
}

MyBatis XML 修正

<select id="allUser" resultType="AusUsers" parameterType="UserQuery">
    SELECT * FROM AUS_USERS
    WHERE 1=1
    <if test="ausCardcode != null and ausCardcode != ''">
        AND AUS_CARDCODE LIKE CONCAT('%', #{ausCardcode}, '%')
    </if>
    <if test="ausUsername != null and ausUsername != ''">
        AND AUS_USERNAME LIKE CONCAT('%', #{ausUsername}, '%')
    </if>
</select>

JSP 表單注意

  • <form action="${basePath}user/userInfo" method="post"> 確保 action 路徑正確。
  • 輸入框 name 屬性與 DTO 字段名一致(ausCardcode、ausUsername)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved