我有一个文本字段,用户可以在其中输入 cron 表达式(例如,0 */5 * * * *
)。然后,我将其拆分并构建一个 javax.ejb.ScheduleExpression
。
现在,javax.ejb.ScheduleExpression
接受不同元素的任何字符串,无需验证。例如我可以
scheduleExpression.minute("randomText");
并被接受。如果然后尝试使用 ScheduleExpression ,我显然会遇到错误(例如,当我尝试用它创建计时器时)。
我开始编写代码来验证输入,但规则并不是那么简短和琐碎:http://docs.oracle.com/javaee/6/api/javax/ejb/ScheduleExpression.html
是否有一个简单的方法(在 Java EE 中)或一个已经完成这项工作的库?
最佳答案
由于我遇到了同样的问题,我为 EJB 计时器构建了一个 Bean 验证器注释。
请随意使用它。对于所有不想或无法使用 bean 验证的人,请查看文件 CronField.java 中的正则表达式来手动验证您的字符串。
正则表达式是为“ScheduleExpression”而不是“CronExpression”设计的,因此我选择的名称可能看起来有点困惑。
如果您有改进或优化,请向我发送拉取请求或消息。
源代码可在此处获取 repository .
用法: 公开课月{
@CheckCronField(CronField.MONTH)
public String expression;
...
}
同一存储库的测试文件夹中提供了更多示例。
关于validation - 验证 javax.ejb.ScheduleExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384688/