gpt4 book ai didi

Java Bean 验证 Spring

转载 作者:行者123 更新时间:2023-12-01 04:32:59 26 4
gpt4 key购买 nike

背景。使用spring进行依赖注入(inject),struts2运行在tomcat服务器上。

在进行 Bean 验证时,我喜欢采用两层方法。

  1. 在将表单提交到服务器之前在客户端运行验证(目前使用 jQuery 验证插件)以检查格式是否正确/完整。
  2. 使用 Bean 本身的注释在服务器上运行 Bean 验证,以在有人规避客户端验证的情况下阻止数据库崩溃。

问题:

跟踪两组验证标准有点痛苦...错误消息很容易跟踪,因为我可以将它们粘贴到 messages.properties 文件中并为我的两个验证标准进行消息查找bean 和 JSP 页面。真正的问题是数字。

例如,假设我有一个带有字符串变量注释的 list 。发布时最小尺寸为 10 最大尺寸为 2000。三个月后,我发现 2000 已经不够了,我需要将大小限制增加到最大 4000。我现在有两个地方可以去更改号码。

带有注释的 Java Bean 验证:

@Entity
public class Checklist{
@Size(min = 10, max = 2000, message = "{Checklist.size}")
private String notes;
}

jQuery 表单验证:

$("#someForm").validate({
rules:{
'checklist.notes':{
minlength:10,
maxlength:2000
}
}
});

有什么方法可以像重复使用消息一样重复使用该号码吗?

最佳答案

使用通用类或接口(interface)中的常量。使用 Struts 将其注入(inject) JSP jQuery 脚本 <s:property/>标签。

这样,当您更改常量值时,所有 Java 类和所有 JSP 页面都会自动读取新值,而无需更改代码或替换某些内容。

基类、接口(interface)或任何包含常量的内容

public static final int MIN_LENGHT = 20;
public static final int MAX_LENGHT = 4000;

操作(使用常量实现/扩展上面的类)

@Entity
public class Checklist{
@Size(min = MIN_LENGHT, max = MAX_LENGHT, message = "{Checklist.size}")
private String notes;
}

JSP

$("#someForm").validate({
rules:{
'checklist.notes':{
minlength:<s:property value="@my.package.constantClass@MIN_LENGHT" />,
maxlength:<s:property value="@my.package.constantClass@MAX_LENGHT" />
}
}
});

记得设置struts.ognl.allowStaticMethodAccesstruestruts.xml

关于Java Bean 验证 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com