2

这是我在 Play 2 模板中的缩写代码...

@(variable: com.mypackage.Variable) 

<div class='statsbody'>
    <div class='statsform'>
        <label>Average:</label>
        <span>@"%.2f".format(variable.getAverage())</span>
    </div>
</div>

我得到一个编译错误:

`identifier' expected but `"' found

我从这个问题中得到了上面的想法,它说明了如何在 scala 命令提示符下执行此操作,这很好,但在模板中不起作用。

getAverage()方法属于我正在使用的外部 Java 包,它返回一个原始的double. 这一切都很好,没有格式我可以很高兴地显示正确的数字。

我尝试了多种替代方法,包括使用静态 Java 字符串格式化方法......

@String.format("%.2f", variable.getAverage())

...这给了

Overloaded method value [format] cannot be applied to (String, Double)

所以我的问题是,在 Play 2 模板中格式化双精度的正确方法是什么?我知道我可能会使用 Javascript,但我想知道是否有 Play/Scala 解决方案。

4

3 回答 3

12

使用括号:

@("%.2f".format(variable.getAverage()))

或者:

@{
  "%.2f".format(variable.getAverage())
  //more scala code
}

它允许您在模板中编写多语句 scala 代码。

于 2013-06-02T08:40:45.673 回答
0

我找到答案,但它并没有直接解决手头的问题。如果我把它装进这样的String.format盒子里,我可以让代码工作......doublejava.lang.Double

@String.format("%.2f", new java.lang.Double(variable.getAverage()))

这暂时解决了我的问题,但并没有真正回答这个问题。必须有一个 Scala/Play 解决方案……不是吗?

于 2013-06-02T01:46:18.670 回答
0

我发现正确更改用户语言并将格式应用于数字的唯一解决方案是:

在控制器中:

public Result lang(String lang) {
    changeLang(lang);
    Logger.debug("Language change request: " + lang);
    return redirect(routes.Dashboard.dashboard());
}

在模板中,我们使用以下内容:

 <td>@("%.2f".formatLocal(lang().toLocale(), variable.getAverage()))</td>
于 2015-02-15T16:08:04.840 回答