测试字符串是否可以转换为FreeMarker中的数字

Eli*_*ria 4 freemarker

我试图测试一个字符串是否可以转换为FreeMarker中的数字.例如,可以转换"123"和"3.14",但"foo"不能.我知道我可以通过对字符串使用数字方法(例如"123"?number)并查看它是否产生错误来测试这一点,但我正在寻找一种方法来测试它而不会导致错误.

我尝试过?matches("^\d+$"),它对整数工作正常,但我正在寻找适用于所有数字的东西.

我可以使用更复杂的正则表达式来做到这一点,但我想知道是否有更简单的方法.

Chs*_*y76 9

更简单的方法是不要在FreeMarker中执行:-)这听起来像控制器(或模型上的方法)应该做的而不是查看模板.也就是说,你有几个选择:

  1. <#attempt> / <#recover>块内使用?号.
  2. 在一个模型对象中编写一个方法,以检查您的字符串是否为数字,并从模板中调用它.
  3. 编写一个自定义指令来为您执行此操作.