我正在尝试测试是否可以在 FreeMarker 中将字符串转换为数字。例如,“123”和“3.14”可以转换,但“foo”不能。我知道我可以通过在字符串上使用 number 方法(例如 "123"?number )并查看它是否会产生错误来对此进行测试,但我正在寻找一种方法来对此进行测试而不会导致错误。

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

我可能可以使用更复杂的正则表达式来完成,但我想知道是否有更简单的方法。

最佳答案

更简单的方法是不要在 FreeMarker 中执行 :-) 这听起来像是 Controller (或模型上的方法)应该做的事情,而不是 View 模板。也就是说,您有几个选择:

  • 使用 <#attempt> / <#recover> 块中内置的 ?number。
  • 在您的模型对象之一中编写一个方法来检查您的字符串是否为数字并从模板中调用它。
  • 编写一个自定义指令来为您执行此操作。
  • 关于freemarker - 测试字符串是否可以在 FreeMarker 中转换为数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1474274/

    10-10 23:29