Ris*_*sal 3 java rest json spring-boot
嗨,我一直在尝试通过“JSR-303”验证其余请求的数据,代码如下-:
*pojo 注释级别
@NotNull(message="Carrier ID cannot be null")
private String carrier;
Run Code Online (Sandbox Code Playgroud)
*MessageStatusDoc 类
@Id
private String transactionId;
private String status;
private Key key;
private AccountDetail accountDetail;
Run Code Online (Sandbox Code Playgroud)
*调用方法
saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)
Run Code Online (Sandbox Code Playgroud)
关键类包含载体字段
任何人都可以建议为什么我无法捕捉到错误..?
PS,当我尝试记录时,该值在控制台上打印为空值..
您提供的代码看起来不错。尽管您没有提供控制器注释。例如
@PostMapping
public void saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc)
Run Code Online (Sandbox Code Playgroud)
不过一定要加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
到您的 pom 文件(至少对于 Spring Boot >= 2.3.0)。这将包括验证 api 以及执行实际验证工作的休眠验证器。
此外,如果在外部包中有注释尽量不要混合
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
这是一个例子。
我假设下面的课程是您的 MessageStatusDoc。
运营商字段是您需要验证的。
public class MessageStatusDoc {
@Id
private String transactionId;
private String status;
private Key key;
@NotNull(message="Carrier ID cannot be null")
private String carrier;
//getter setter
}
Run Code Online (Sandbox Code Playgroud)
这是使用 MessageStatusDoc 作为参数的方法
public void saveMessage(@Valid @RequestBody MessageStatusDoc messageStatusDoc) {
//nothing to do for now
}
Run Code Online (Sandbox Code Playgroud)
如果您像给定的示例一样做得很好,那么如果任何方法调用 saveMessage 方法,但 messageStatusDoc 参数的载体字段为 null,则验证将引发异常。
还有结束。我有个问题。可以给一下全部代码吗?
归档时间: |
|
查看次数: |
4947 次 |
最近记录: |