[FIXED] Erforderlicher Anforderungsparameter ‘searchQuery’ für Methodenparametertyp String ist nicht vorhanden]

Ausgabe

Ich versuche, eine Suchfunktion zu schreiben, aber ich stoße auf einen Fehler, wenn ich die Suchanfrage vom Frontend zum Backend übergebe. Ich habe die meisten Lösungen im Internet ausprobiert, aber es ist immer noch nicht in Ordnung.

Vollständiges Fehlerprotokoll

12.10.2022 15:05:10.575 WARN 21272 — [nio-8090-exec-2] .wsmsDefaultHandlerExceptionResolver : Behoben [org.springframework.web.bind.MissingServletRequestParameterException: Erforderlicher Anforderungsparameter „searchQuery“ für Methodenparametertyp String ist nicht hier]

Frontend

<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);
    }
}

Lösung

Es ist nicht die richtige Art, Parameter über Axios zu senden. Sie können Parameter senden, indem Sie Ihren Code im Frontend ändern in: –

axios.post(`api/searchRecord`, null, { params: {
  searchQuery
}}

Welche sendet die Anfrage als: https://localhost:8080/api/searchRecord?searchQuery=valueofsearchtext

Belassen Sie Ihren Controller so, wie er ist, da im Backend keine Änderungen erforderlich sind.

@CrossOrigin
    @PostMapping(value = "api/searchRecord")
    @ResponseBody
    public String searchRecord(@RequestParam(value = "searchQuery") String searchQuery) {
        System.out.println(searchQuery);
        return searchRecordService.searchRecordService(searchQuery);
    }

Dies sollte das Problem in Ihrem Code sortieren.


Beantwortet von –
Sumit


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like