проверьте, можно ли преобразовать строку в число в FreeMarker
Я пытаюсь проверить, можно ли преобразовать строку в число в FreeMarker. Например, "123" и " 3.14 "могут быть преобразованы, но" foo " не может. я знаю, что могу проверить это с помощью числового метода в строке (например, "123"?number) и посмотреть, не приводит ли это к ошибке, но я ищу способ проверить это без возникновения ошибки.
Я пробовал ?matches("^d+$"), и это прекрасно работает для целых чисел, но я ищу что-то, что работает на всех числах.
Я, наверное, смогу он использует более сложное регулярное выражение, но мне интересно, есть ли более простой способ.
1 ответ:
Проще всего не делать этого в FreeMarker : -) это звучит так, как будто что-то контроллер (или метод на модели) должен делать, а не шаблон представления. Тем не менее, у вас есть несколько вариантов:
- Использовать ?номер, встроенный в блок
<#attempt> / <#recover>.- Напишите метод в одном из объектов модели, чтобы проверить, является ли ваша строка числом, и вызовите его из шаблона.
- Напишите пользовательскую директиву, чтобы сделать это за вас.
Comments