groovy - Groovy 在调用 getter 方法时抛出 MissingPropertyException
问题描述
我正在为 Hybris 编写一个小的 Groovy 脚本。
由于未知的原因,当我尝试调用 .getCronExpression() 时,Groovy 尝试获取名为 getCron 的属性。
Script execution has failed [reason: groovy.lang.MissingPropertyException: No such property: getCron for class: de.hybris.platform.cronjob.model.TriggerModel]
我尝试调用的吸气剂存在于课堂上。
def methods = TriggerModel.declaredMethods.findAll { !it.synthetic }.name
println methods;
//[getDaysOfWeek, getWeekInterval, setDaysOfWeek, setWeekInterval, getRelative, getJob, setActivationTime, setMaxAcceptableDelay, getTimeTable, setActive, setJob, getCronJob, getActivationTime, setDateRange, getDateRange, getMaxAcceptableDelay, getCronExpression, setCronExpression, setCronJob, getActive, setRelative, setDay, setHour, setMinute, setSecond, getHour, getMinute, getSecond, getYear, getMonth, setYear, setMonth, getDay]
代码部分:
def currentDate = new Date();
def query = new FlexibleSearchQuery("SELECT {pk} FROM {cronjob} WHERE {active} IS true");
def result = flexibleSearchService.search(query).getResult();
for (cj in result) {
def activeTriggers = cj.getTriggers().stream().filter{p -> p.getActive()}.collect();
if (activeTriggers){
def at = activeTriggers.get(0);
def activationTS = at.getActivationTime(); // works
if (activationTS.before(currentDate)){
println cj.code + " has invalid next activation date set: " + activationTS;
}
def x = at.getCronExpression(); // error
}
更新:项目使用 hybris 5.7
解决方案
用变量名替换getter解决了这个问题。
代替-
def x = at.getCronExpression(); // error
和
def xam = at.cronExpression; // working
完整的工作groovy-
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
def currentDate = new Date();
def query = new FlexibleSearchQuery("SELECT {pk} FROM {cronjob} WHERE {active}='1'");
def result = flexibleSearchService.search(query).getResult();
for (cj in result) {
def activeTriggers = cj.getTriggers().stream().filter{p -> p.getActive()}.collect();
if (activeTriggers){
def at = activeTriggers.get(0);
def activationTS = at.getActivationTime(); // works
if (activationTS.before(currentDate)){
println cj.code + " has invalid next activation date set: " + activationTS;
}
def xam = at.cronExpression; // working
}
}
推荐阅读
- java - 从 json 连接插入带有自定义列表视图的搜索视图
- c# - 将指针传递给 Go DLL Syscall 中的指针
- bash - 流过滤大量由标准输入中的行号指定的行
- c# - 使 GameObject 的 Y Rotation 与相机的 Y Rotation 相同
- python - 这是在迭代时从字典中删除项目的正确方法吗?
- next.js - 在没有组件的情况下在 NextJS 中获取查询参数
- c++ - 如何拆分arduino代码中的数字?
- javascript - 当从 Codebehind 更新文本框时,为什么 asp:UpdatePanel 不改变我的 ASP:Textbox 的值?
- javascript - 如何创建具有内置决策和事件触发的自定义 useReducer
- reactjs - 如何在 React 中异步更新同一数组中的多个对象?