KRL с помощью пчелиного укуса в расширенных кавычках
Каковы действительные выражения жала пчелы в расширенной цитате?
rule set_persistents {
select when pageview ".*"
noop();
always {
ent:ecount += 1 from 1;
app:acount += 1 from 1;
}
}
rule test_bee_stings {
select when pageview ".*"
pre {
sum = ent:ecount + app:acount;
content = <<
sum is #{sum}<br/>
sum + 1 is #{sum+1}<br/>
ecount is #{ent:ecount}<br/>
acount is #{app:acount}
>>;
}
notify("Results", content) with sticky = true;
}
Когда я запускаю это, я ничего не получаю (никогда не вижу окно уведомления). Если я удаляю строки ecount и acount, я получаю
sum is 2
sum + 1 is 21
Какие выражения пчел действительны в расширенной кавычке? Это отличается от обычной строки в кавычках?
1 ответ
Переменные, используемые в beestings в расширенных кавычках, должны уже иметь назначенное значение и не быть выражением. Это связано с тем, что beestings в расширенных кавычках оцениваются на стороне клиента, а не на стороне сервера. Я также, по ранее объясненной причине, не рекомендовал бы использовать 'sum+1' в beesting, хотя в настоящее время он работает для конечных точек, которые понимают JavaScript.
Вот как я бы написал, что вы пытаетесь сделать:
ruleset a60x546 {
meta {
name "extended-quotes-beesting"
description <<
extended-quotes-beesting
>>
author "Mike Grace"
logging on
}
rule test_bee_stings {
select when pageview ".*"
pre {
ecount = ent:ecount + 1;
acount = app:acount + 1;
sum = ecount + acount;
sumplus = sum + 1;
content = <<
sum is #{sum}<br/>
sum + 1 is #{sumplus}<br/>
ecount is #{ecount}<br/>
acount is #{acount}
>>;
}
{
notify("Results", content) with sticky = true;
}
always {
ent:ecount += 1 from 1;
app:acount += 1 from 1;
}
}
}
действие выстрел приложения запускается несколько раз на example.com с помощью букмарклета:
* Я бы также не советовал использовать предыдущее правило postlude для изменения переменных приложения и сущности, которые вы затем используете в следующем правиле, ожидая, что оно будет увеличено. Хотя то, что вы сделали, работает семантически грязно и, возможно, будет немного чище, как я продемонстрировал.
** следует принимать с солью, так как это мнение только одного сумасшедшего.:)