Как я могу добавить проверки для конечной точки отдыха весенней загрузки с параметром строки?

Как проверить конечную точку отдыха при загрузке с помощью параметра String, вот пример моей конечной точки.

@ResponseBody
@RequestMapping(value = "/getProfile", method = RequestMethod.POST,  produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> getProfile(@RequestBody @Valid @NotEmpty String profileId){}

даже думал, что я добавил @valid а также @NonEmpty ограничение его не подтверждается.

но это работает для других классов. например,

@ResponseBody
    @RequestMapping(value = "/saveProfiles", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Object> saveProfiles(@RequestBody @Valid PersistProfilesRequest request){}

здесь все поля в классе PersistProfilesRequest, к которым применено ограничение, проверяются правильно.

проверка не происходит для параметра метода с классом Java, таким как String и Map.

я использую spring boot 1.3.0 с валидатором гибернации.

Как я могу добавить проверку конечной точки отдыха с параметром строки?

РЕДАКТИРОВАТЬ

я использую junit и mockmvc для проверки конечной точки, ниже приведен тест

@Test
public void testGetProfile() throws Exception{

    String profileId = "   ";

    this.mockMvc.perform(post("/getProfile").content(profileId).accept(MediaType.APPLICATION_JSON).contentType("application/json"))
                .andDo(print())
                .andExpect(status().isInternalServerError());

}

2 ответа

Вы можете попытаться аннотировать ваш класс контроллера с помощью @Validated. В моем случае это помогло.

@Validated
@RestController
@RequestMapping(path = "/api/somethin")
public class LegacyRestController {

Весна имеет HttpMessageConverters и некоторые реализации, такие как:

  • MappingJackson2HttpConverter
  • Jaxb2RootElementHttpMessageConverter
  • StringHttpMessageConverter

и т.п.

Кажется, что если вы отправляете строку и StringHttpMessageConverter преобразует ваш тип StringHttpMessageConverter:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/converter/StringHttpMessageConverter.html

MappingJackson2HttpMessageConverter Ответственный за MediaType.APPLICATION_JSONно StringHttpMessageConverter получает все типы

Как я вижу StringHttpMessageConverter конвертирует @RequestBody Строка...

Струнный класс не попал ни под капот javax.validation аннотации

Вот почему я думаю, что это не работает

Вам нужно обернуть вашу строку каким-нибудь объектом, например:

public class StringValue{

 @NotEmpty
 private String field;
 //getters and setters
}

public ResponseEntity<Object> getProfile(@RequestBody @Valid StringValue profileId)
Другие вопросы по тегам