如何将格式化程序应用于 Play 2 中的独特形式?

How to apply a formatter to a unique form in Play 2?

我的应用程序使用的是 Play 2.3.7。

我有一个表格需要一个特殊的日期格式化程序。所以我在创建表单并呈现视图的控制器方法中执行此操作:

Formatters.register(Date.class, new SimpleFormatter<Date>() {
    private SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");

    @Override
    public Date parse(String input, Locale locale) throws ParseException {
        try {
            return formatter.parse(input);
        } catch (ParseException e) {
            // We catch the error because it should be transparent for the user
            Logger.error(e.getLocalizedMessage(), e);
            return null;
        }
    }

    @Override
    public String print(Date input, Locale locale) {
        return formatter.format(input);
    }
});

问题是这个格式化程序全局应用于我的所有应用程序。我的其他表格使用的是另一种日期格式:dd/MM/yyyy HH:mm:ss(法语格式)。 那么我如何才能将格式化程序仅应用于一种形式或至少取消注册格式化程序?

谢谢

您可以使用 Formats 注释之一来注释表单字段,如下所示:

public class SampleForm {

    @Formats.DateTime(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date date;

    ...

}