我想在spring POJO类中加载任何属性文件。
实际上,我想使用@Size
,@NotNull
中属性文件中的任何属性或spring模型类中的任何验证注释。
但是问题是@Size
,@NotNull
等注释在编译时被调用,而任何属性文件的数据在运行时被调用。
甚至,我想在max
的{{1}}参数中使用它接受唯一的常数整数。如何加载值并将其强制转换为整数?
我可以使用自定义验证器或任何自定义批注来解决此问题,但是根据组织政策,我不能使用太多自定义。
答案 0 :(得分:0)
我找到了解决此问题的另一种方法,我们可以使用一类常量而不是属性文件。
我可以在工作区中的任何地方使用此常量文件,而属性文件不能在模型验证的Size.max
属性中使用
CommonConstants.java
public class CommonConstants
{
public static final int NAME=4;
public static final int ROLE=2;
}
Employee.java
private int id;
@Size(max = CommonConstants.NAME, message = "length exceeds : name")
private String name;
@Size(max = CommonConstants.ROLE, message = "length exceeds : role")
private String role;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
EmployeeController.java
@Controller
public class EmployeeController {
private static final Logger logger = LoggerFactory.getLogger(EmployeeController.class);
private Map<Integer, Employee> emps = null;
public EmployeeController() {
emps = new HashMap<Integer, Employee>();
}
@RequestMapping(value = "/emp/save.do", method = RequestMethod.POST)
public String saveEmployeeAction(@Valid Employee employee, BindingResult bindingResult, Model model)
{
if (bindingResult.hasErrors()) {
logger.info("Returning empSave.jsp page");
return "empSave";
}
logger.info("Returning empSaveSuccess.jsp page");
model.addAttribute("emp", employee);
emps.put(employee.getId(), employee);
return "empSaveSuccess";
}
}
输出