3
StringTemplateを使用すると、プログラマーはゲッター(引数なしの関数)を介してデータをフェッチできます。StringTemplateの引数を使用してJava関数を呼び出しますか?
文字列テンプレートの引数を使用してJava関数を呼び出すことは可能ですか?
StringTemplateを使用すると、プログラマーはゲッター(引数なしの関数)を介してデータをフェッチできます。StringTemplateの引数を使用してJava関数を呼び出しますか?
文字列テンプレートの引数を使用してJava関数を呼び出すことは可能ですか?
辞書を悪用することで回避策があります。 List(issue on github)の項目数を制限するための "function"の実装例です。あなたのコードで
は、辞書を追加:
group.defineDictionary("max", new MaxListItemsLimiter());
使い方(この例では、配列内の最初のアイテムが最大であるアイテムがカウントされます。):本当に
<max.(["50",myObject.items]):{msg|<msg.something>}>
final class MaxListItemsLimiter extends AbstractMap<String, Object> {
@Override
public Object get(Object key) {
List items = (List) key;
if (!items.isEmpty()) {
//First item is max. count
Integer limit = NumberUtils.toInt(items.get(0).toString(), -1); //use Integer.parseInt
if (limit != -1) {
return items.subList(1, Math.min(items.size(), limit + 1));
} else {
throw new AssertionError("First parameter in max must be number");
}
} else {
return super.get(key);
}
}
@Override
public Set<Map.Entry<String, Object>> entrySet() {
return Collections.emptySet();
}
@Override
public boolean containsKey(Object key) {
if (key instanceof List) {
return true;
} else {
throw new AssertionError("You can use max only on Lists.");
}
}
}
ありません。そうすれば、「コードの実行」や違反の違反が許されます。ただし、属性フォーマットのサポート - たとえば'' format = "1,2,3,4" 'は悪用される可能性があります... –
マップを作成し、それにいくつかの値と期待される結果を入れることによって、人工的に関数的な動作をシミュレートすることも可能です。次に、テンプレート内の関数のようなマップを使用することができます: –
machinery