6

我有一个文本字段,用户可以在其中输入 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 中)或已经完成这项工作的库?

4

2 回答 2

4

由于我遇到了同样的问题,我为 EJB 计时器构建了一个 bean 验证器注释。

随意使用它。对于那些不想或可以使用 bean 验证的人,请查看文件 CronField.java 中的正则表达式来手动验证您的字符串。

正则表达式是为“ScheduleExpression”而不是“CronExpression”设计的,所以我选择的名称可能看起来有点混乱。

如果您有改进或优化,请向我发送拉取请求或消息。

源代码可在此存储库中获得。

用法:公开课月{

    @CheckCronField(CronField.MONTH)
    public String expression;
    ...
}

在同一存储库的测试文件夹中提供了更多示例。

于 2013-07-05T18:00:33.637 回答
-2

如果您在 Java EE 环境中并且有可用的quartz,也许这个问题有您想要的答案......

于 2013-01-21T09:42:25.453 回答