相关疑难解决方法(0)

Spring Rest ErrorHandling @ControllerAdvice/@Valid

我在REST控制器中一起使用@ControllerAdvice@Valid注释时遇到了麻烦.

我有一个休息控制器声明如下:

@Controller
public class RestExample {

    ...

    /**
     * <XmlRequestUser><username>user1</username><password>password</password><name>Name</name><surname>Surname</surname></XmlRequestUser>
     * curl -d "@restAddRequest.xml" -H "Content-Type:text/xml" http://localhost:8080/SpringExamples/servlets/rest/add
     */
    @RequestMapping(value="rest/add", method=RequestMethod.POST)
    public @ResponseBody String add(@Valid @RequestBody XmlRequestUser xmlUser) {
        User user = new User();
        user.setUsername(xmlUser.getUsername());
        user.setPassword(xmlUser.getPassword());
        user.setName(xmlUser.getName());
        user.setSurname(xmlUser.getSurname());

        // add user to the database
        StaticData.users.put(xmlUser.getUsername(), user);
        LOG.info("added user " + xmlUser.getUsername());

        return "added user " + user.getUsername();
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个ErrorHandler类:

@ControllerAdvice
public class RestErrorHandler extends ResponseEntityExceptionHandler {

    private static Logger LOG = Logger.getLogger(RestErrorHandler.class);


    @ExceptionHandler(RuntimeException.class)
    public ResponseEntity<Object> …
Run Code Online (Sandbox Code Playgroud)

java rest error-handling spring

12
推荐指数
1
解决办法
1万
查看次数

Spring 验证返回长错误消息,而不仅仅是自定义消息

Spring 验证返回长错误消息而不是自定义一次。

这是 dto 中的代码部分。

public class RequestDto implements Serializable {
    @NotNull(message="{id.required}")
    private Long id;

}
Run Code Online (Sandbox Code Playgroud)

在控制器中为输入添加了@Valid。

@RequestMapping(value = ApiPath.PATH, method = RequestMethod.POST, produces = { "application/xml",
            "application/json" })
    public @ResponseBody ResultDecorator saveRequest(
            @Valid @RequestBody RequestDto msaDisabScreenRequestDto) throws Exception {

}
Run Code Online (Sandbox Code Playgroud)

API 返回以下错误。

<message>Validation failed for argument at index 0 in method: public om.gov.moh.msa.framework.resolver.ResultDecorator om.controller.MaController.saveRequest(om..dto.RequestDto) throws java.lang.Exception, with 1 error(s): [Field error in object 'requestDto' on field 'id': rejected value [null]; codes [NotNull.requestDto.id,NotNull.id,NotNull.java.lang.Long,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [requestDto.id,id]; arguments []; default …
Run Code Online (Sandbox Code Playgroud)

spring-validator spring-boot

3
推荐指数
1
解决办法
8484
查看次数