Java Spring Controller Parameter Validierung
Posted: 21 May 2025, 12:11
Ich habe einen Federcontroller mit einem Suchendpunkt: < /p>
Ich möchte dem SearchQuery Parameter Validierung hinzufügen, um sicherzustellen, dass er nicht länger als 10 Zeichen sein kann. Ich habe zwei Ansätze ausprobiert, die beide nicht funktionieren.
Versuch 2-Verwenden Sie "Datenübertragungsobjekt" (dto) "Muster:
Außerdem kann ich, wenn ich das DTO -Muster verwende, den Endpunkt mit/such? Ich weiß nicht, warum das nicht funktioniert.
Code: Select all
@RestController
public class MyController {
@GetMapping("/search")
public String search(@RequestParam("q") final String searchQuery) {
return "You searched: " + searchQuery;
}
}
Code: Select all
@RestController
@Validated
public class MyController {
@GetMapping("/search")
public String search(@RequestParam("q") @Size(max = 10) @Valid final String searchQuery) {
return "You searched: " + searchQuery;
}
}
Code: Select all
// DTO class for search query
public class SearchQuery {
@NotBlank(message = "Search query must not be empty")
@Size(max = 10, message = "Search query must be 10 or less characters")
private String searchQuery;
public void setSearchQuery(final String searchQuery) {
this.searchQuery = searchQuery;
}
public String getSearchQuery() {
return searchQuery;
}
}
// Controller
@RestController
@Validated
public class MyController {
@GetMapping("/search")
public String search(@Valid final SearchQuery searchQuery) {
return "You searched: " + searchQuery.getSearchQuery();
}
}