Java 如何在表单输入中仅将长数字作为字符串写入?
我正在使用SpringDataJPA在SpringBoot中注册。我在表单字段中放置长值时遇到了一个问题 模型类:我在Java 如何在表单输入中仅将长数字作为字符串写入?,java,spring-boot,hibernate,thymeleaf,Java,Spring Boot,Hibernate,Thymeleaf,我正在使用SpringDataJPA在SpringBoot中注册。我在表单字段中放置长值时遇到了一个问题 模型类:我在私有长nsuID之前使用了@NotBlank注释,但是当表单重定向时,nsuID字段已填充0 @Entity @Table(name="alumnies",uniqueConstraints = @UniqueConstraint(columnNames = "email") ) public class Alumni { @Id
私有长nsuID
之前使用了@NotBlank
注释,但是当表单重定向时,nsuID
字段已填充0
@Entity
@Table(name="alumnies",uniqueConstraints = @UniqueConstraint(columnNames = "email") )
public class Alumni {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name="NSU_ID")
@NotBlank
private long nsuID;
public long getNsuID() {
return nsuID;
}
public void setNsuID(long nsuID) {
this.nsuID = nsuID;
}
}
HTML文件:
<div class="form-group"
th:classappend="${#fields.hasErrors('nsuID')}? 'has-error':''">
<label for="nsuID" class="control-label">NSU ID</label> <input
id="nsuID" class="form-control" th:field="*{nsuID}" />
<p class="error-message"
th:each="error : ${#fields.errors('nsuID')}"
th:text="${error}">Validation error</p>
</div>
@Controller
public class RegistraionController {
@Autowired
private UserService us;
@GetMapping("/")
public String showRegistration(Model model) {
Alumni alumni = new Alumni();
model.addAttribute("alumni", alumni);
return "registration";
}
@PostMapping("/registration")
public String saveAlumni(@ModelAttribute("alumni") @Validated Alumni alumni, BindingResult bindingResult) {
Alumni existing = us.findByEmail(alumni.getEmail());
if (existing != null) {
bindingResult.rejectValue("email", null, "There is already an account registered with that email");
}
if (bindingResult.hasErrors()) {
return "registration";
}
us.saveAlumni(alumni);
return "redirect:/";
}
}
long无法保存空值,因此它可能正在转换为0。尝试将其更改为Long(包装器类)
正如@Dip Halani所说,long类型变量不能包含null值,因为它是原始类型变量,long类型变量的默认值为0 而您对
nsuID
的@NotBlank
约束是错误的,因为它检查字符序列的修剪长度是否为空,它通常用于验证给定字符串值必须不为null,并且修剪长度必须大于零
如果要验证非空值,请使用@NotNull
并将long nsuID
替换为long nsuID
看
@NotBlank
private Long nsuID;