我想用spring JDBC從資料庫中搜索兩個日期的記錄。我使用了startDate=?和endDate=?,我需要糾正控制器的位置。我得到的例外是
org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver resolveException
警告:解決了[org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException。未能將'java.lang.String'型別的值轉換為所需型別'java.sql.Date';嵌套例外是java.lang.IllegalStateException。無法將'java.lang.String'型別的值轉換為所需型別'java.sql.Date':沒有找到匹配的編輯或轉換策略]
**`viewemp?start=2021-08-30&end=2021-09-24`**
public class EmpDao {
JdbcTemplate模板。
public void setTemplate(JdbcTemplate模板) {
this.template = template;
}
public List<Event> getEmployees(Date start, Date end){
return template.query("select * from Event where startDate=?and endDate=?",new RowMapper< Event> (){
public Event mapRow(ResultSet rs, int row) throwsSQLException {
事件e=new Event()。
e.setEventName(rs.getString(1))。
e.setEventOrgName(rs.getString(2))。
e.setEventFare(rs.getInt(3))。
e.setStartDate(rs.getDate(4))。
e.setEndDate(rs.getDate(5) )。
return e;
}
});
}
}
public class Event {
private String eventName;
private String eventOrgName;
private int eventFare;
private Date startDate;
private Date endDate;
}
@Controller
public class EmpController {
@Autowired
EmpDao dao。
@GetMapping("/viewemp")
public String viewemp(@RequestParam(value="start") @DateTimeFormat(pattern="dd/MM/yyyy") Date start,
@RequestParam(value="end") @DateTimeFormat(pattern="dd/MM/yyyy") Date end, Model m){
串列<事件> list=dao.getEmployees(start,end)。
m.addAttribute("list",list)。
return "viewemp"。
}
}
<h1>添加新員工</h1>
<form method="get" action="viewemp">
<input type="date" id="start" name="start"/>
<input type="date" id="end" name="end"/>
<input type="submit" value="Filter" />
</form>
uj5u.com熱心網友回復:
你應該用@DateTimeFormat來定義日期格式:
@RequestParam(value="start") @DateTimeFormat(pattern="dd/MM/yyyy") 日期開始。
并在請求中以字串的形式傳遞日期,例如:
/viewemp?start=05/09/2021& end=06/09/2021
所以你的控制器應該是這樣的:
public String viewemp( Date start,
Date end, Model m){
串列<事件> list=dao.getEmployees(start,end)。
m.addAttribute("list",list)。
return "viewemp"。
uj5u.com熱心網友回復:
檢查你的XML。你可能漏掉了<mvc:annotation-driven />來包含。 而控制器則改為
@RestController。
public class EmpController {
@Autowired
EmpDao dao。
@PostMapping("/viewemp")
public String viewemp(@RequestParam(value="start") @DateTimeFormat(pattern="yyyy-MM-dd") Date start,
@RequestParam(value="end") @DateTimeFormat(pattern="yyy-MM-dd") Date end, Model m){
串列<事件> list=dao.getEmployees(start,end)。
m.addAttribute("list",list)。
return "viewemp"。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/313461.html
標籤:
