我试着写一个搜索函数,但是当我把搜索查询从前端传递到后端时,我遇到了一个bug。我试了互联网上的大多数解决方案,但是仍然不行。
完成错误日志
2022年10月12日15:05:10.575警告21272---[nio-8090-exec-2]. w.s.m.s.默认处理程序异常解决程序:已解决[组织。springframework。web。绑定。缺少服务请求参数异常:方法参数类型String所需的请求参数'searchQuery'不存在]
前端
<template>
<div class="input-group mb-3">
<input type="search" class="form-control rounded" v-model="searchQuery" placeholder="Company name" aria-label="Search" aria-describedby="search-addon" />
<button type="button" class="btn btn-outline-primary" @click='searchRecord'>Search</button>
</div>
</template>
<script>
import axios from 'axios'
export default {
name: 'RegistrationEnquiry',
components: {
},
data() {
return {
records: [],
searchQuery: '',
};
},
computed: {},
methods: {
searchRecord(){
axios.post('searchRecord', this.searchQuery)
.then(successResponse => {
console.log(successResponse)
})
.catch(failResponse => {
alert("Error(failResponse)")
console.log(failResponse)
})
},
},
}
</script>
SearchRecordController.java
@Controller
public class SearchRecordController {
@Autowired
SearchRecordService searchRecordService;
@CrossOrigin
@PostMapping(value = "api/searchRecord")
@ResponseBody
public String searchRecord(@RequestParam(value = "searchQuery") String searchQuery) {
System.out.println(searchQuery);
return searchRecordService.searchRecordService(searchQuery);
}
}
4条答案
按热度按时间nue99wik1#
这不是通过axios发送参数的正确方法。你可以通过改变你的前端代码来发送参数:-
它将以如下形式发送请求:https://localhost:8080/api/searchRecord?searchQuery =搜索文本的值
保持控制器不变,因为后端不需要更改。
这样就可以解决代码中的问题。
izj3ouym2#
从后端方面看,它似乎可以,我认为你需要发送数据后,像这样:
hpcdzsge3#
基本上,当你没有从前端发送任何值,但是你的控制器期望从前端发送一些参数时,就会出现这种情况,为了避免这种情况,你可以使用“required = false”,或者你可以根据你的要求来确定一个默认值,以检查你哪里出错了。
o2rvlv0m4#
前端未向控制器发送数据。请尝试提供默认值=null;