Решение
В классе, в котором вы создаете VelocityEngine, добавьте метод следующим образом
public String trim(String str) {
return str.trim()/*.replace("\n", "").replace("\r", "")*/;
}
, затем добавьте следующее в создаваемый VelocityContext:
context.put("trimmer", this);
и, наконец, в шаблоне скорости выполните следующее
<a href="#">$trimmer.trim("#render_something('xxx')")</a>
Почему это работает?
Хотя поведение скорости четко определено, может быть немного сложно понять, какэто работает иногда.Отдельный метод trim () необходим для получения последовательности символов из шаблона в метод Java, где вы можете вызвать фактический trim () для String.Насколько я знаю, в Velocity нет обрезки, но вы всегда можете вызвать обратно Java с такими хитростями.
Двойные кавычки необходимы, потому что #render_something - это просто макрос, а не функцияcall, это означает, что результаты операторов в макросе дословно помещаются в точку, где макрос «выполняется».