如何用自定义异常抛出来实现四个输入框对应的不同异常
时间: 2024-03-24 10:41:40 浏览: 20
可以自定义表单验证异常类,通过抛出不同类型的异常来实现四个输入框对应的不同异常。具体实现步骤如下:
1. 自定义表单验证异常类,例如:
```java
public class FormValidationException extends RuntimeException {
private String field;
private String message;
public FormValidationException(String field, String message) {
this.field = field;
this.message = message;
}
public String getField() {
return field;
}
public String getMessage() {
return message;
}
}
```
2. 在表单对象中定义验证规则时,可以根据需要抛出自定义异常。例如:
```java
public class MyForm {
public void validate() {
if (StringUtils.isEmpty(name)) {
throw new FormValidationException("name", "姓名不能为空");
}
if (!StringUtils.isNumeric(phone) || phone.length() != 11) {
throw new FormValidationException("phone", "手机号格式不正确");
}
if (!StringUtils.isEmpty(email) && !EmailValidator.getInstance().isValid(email)) {
throw new FormValidationException("email", "邮箱格式不正确");
}
if (age < 18 || age > 60) {
throw new FormValidationException("age", "年龄必须在18岁到60岁之间");
}
}
// 省略 getter 和 setter 方法
}
```
3. 在表单提交的处理方法中,捕获自定义异常并添加到 `BindingResult` 中。例如:
```java
@PostMapping("/submit")
public String submitForm(MyForm myForm, BindingResult bindingResult) {
try {
myForm.validate();
} catch (FormValidationException e) {
bindingResult.addError(new FieldError("myForm", e.getField(), e.getMessage()));
}
if (bindingResult.hasErrors()) {
// 处理异常信息
return "error";
}
// 处理表单提交
return "success";
}
```
4. 在视图页面中,使用 `${bindingResult.fieldError}` 来显示相应的异常信息。例如:
```html
<form action="/submit" method="post">
<div>
<label for="name">姓名:</label>
<input type="text" name="name" id="name" />
<span class="error">${bindingResult.fieldError('name')}</span>
</div>
<div>
<label for="phone">手机号:</label>
<input type="text" name="phone" id="phone" />
<span class="error">${bindingResult.fieldError('phone')}</span>
</div>
<div>
<label for="email">邮箱:</label>
<input type="text" name="email" id="email" />
<span class="error">${bindingResult.fieldError('email')}</span>
</div>
<div>
<label for="age">年龄:</label>
<input type="text" name="age" id="age" />
<span class="error">${bindingResult.fieldError('age')}</span>
</div>
<button type="submit">提交</button>
</form>
```
以上就是使用自定义异常抛出来实现四个输入框对应的不同异常的基本步骤。需要注意的是,在处理自定义异常时,需要将异常信息添加到 `BindingResult` 中,以便在视图页面中显示异常信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)