本文介绍了验证Thymeleaf中的输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个输入:
Masa: <input type="number" class="form-control form-text" name="masa"/>
<div class="text col-sm-12 error" th:if="${wzrost}" >
<p class="text text-center">
To pole jest wymagane
</p>
</div>
Wzrost: <input type="number" class="form-control form-text " name="wzrost"/>
<div class="text col-sm-12 error" th:if="${wzrost}" >
<p class="text text-center">
To pole jest wymagane
</p>
</div>
还有这个控制器;
String x = String.valueOf(masa);
String y = String.valueOf(wzrost);
if(x==null ){
model.addAttribute("wzrost",true);
return"views/success";
}
if(y==null ){
model.addAttribute("wzrost",true);
return"views/success";
}
当我单击表单提交按钮时,总是出现错误nullpointerexception.
When I click form submit button I always get error nullpointerexception.
如何验证输入,以便在输入为空时弹出消息
How do I validate input, so that when it is empty the message pops up
推荐答案
似乎您要实现服务器端验证.为此,最好的方法是使用验证器及其bindingResult.实施服务器端验证的步骤是
It seems like you want to implement server side validation. For this the best approach is to use validators and its bindingResult. Steps to implement server side validation is
-
需要模型
Have for model
public class PersonForm {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
在html中使用表单模型
Use form model in html
<form action="#" th:action="@{/personForm}" th:object="${personForm}" method="post">
<table>
<tr>
<td><label th:text="#{label.name}+' :'"></label></td>
<td><input type="text" th:field="*{name}" /></td>
<td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Generic Error</td>
</tr>
<tr>
<td><button type="submit">Submit</button></td>
</tr>
</table>
</form>
- 具有验证器类
@Component
@Component
public class PersonFormValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return PersonForm.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "name", "field.name.empty");
PersonForm p = (PersonForm) target;
if (p.getName().equalsIgnoreCase("XXX")) {
errors.rejectValue("name", "Name cannot be XXX");
}
}}
- 将验证器绑定到控制器,然后让spring做魔术.
@Controller
@Controller
public class WebController {
@Autowired
PersonFormValidator personFormValidator;
@InitBinder("personForm")
protected void initPersonFormBinder(WebDataBinder binder) {
binder.addValidators(personFormValidator);
}
@PostMapping("/personForm")
public String checkPersonInfo(@Validated PersonForm personForm, BindingResult bindingResult, final RedirectAttributes redirectAttributes) {
if (bindingResult.hasErrors()) {
return "personForm";
}
redirectAttributes.addFlashAttribute("personResult", apiClientService.getPersonResult(personForm));
return "redirect:/spouseForm";
}
}
这篇关于验证Thymeleaf中的输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!