Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧靴;胡子格式化日期_Java_Spring_Spring Boot_Date - Fatal编程技术网

Java 弹簧靴;胡子格式化日期

Java 弹簧靴;胡子格式化日期,java,spring,spring-boot,date,Java,Spring,Spring Boot,Date,我正在尝试创建一个Spring启动应用程序,但遇到了一个无法正确修复的问题。我正在使用JPA存储库来使用SQL数据库,我想保存用户的出生日期,但我不知道如何在通过Mustach模板显示日期时格式化日期(如dd/MM/yyyy) 这是我的代码: 实体: @Entity public class User{ ... @DateTimeFormat(pattern = "dd/MM/yyyy") private Date birthDate; ... } 控制器: @Contro

我正在尝试创建一个Spring启动应用程序,但遇到了一个无法正确修复的问题。我正在使用JPA存储库来使用SQL数据库,我想保存用户的出生日期,但我不知道如何在通过Mustach模板显示日期时格式化日期(如dd/MM/yyyy)

这是我的代码:

实体:

@Entity
public class User{
...
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date birthDate;
...
}
控制器:

@Controller
public class UserController(){
    @GetMapping("/admin/user/list")
    public String userList(Model model){
        List<User> userList = userRepository.findAll();
        model.addAttribute("userList", userList);
        return "/admin/user/list";
    }
...
}
@控制器
公共类UserController(){
@GetMapping(“/admin/user/list”)
公共字符串用户列表(模型){
List userList=userRepository.findAll();
model.addAttribute(“userList”,userList);
返回“/管理员/用户/列表”;
}
...
}
视图:


...
Fecha de nacimiento:{{formatBirthDate}}
...

谢谢大家的帮助

Spring Boot使用JMustache作为胡须文件的模板引擎。默认情况下,JMustache在呈现模板时使用
String.valueOf
将对象转换为字符串

因此,注释被忽略,日期仅转换为:

jshell>String.valueOf(new java.util.Date())
$2==>“欧洲中部时间2021年3月9日星期二23:29:23”
有几个解决方案有自己的权衡:

  • 用户
    实例映射到一个
    用户视图模型
    ,该模型的出生日期格式正确,为
    字符串
    ,并返回这些实例,而不是JPA实体
  • 通过注册自己的
    mustacheviewsolver
    Mustache添加用户定义的对象格式化程序。编译器
    请参阅这些链接以获取参考:
您可以在此处找到一个工作示例:

令人惊讶的答案!谢谢!!
<html>
...
<strong>Fecha de nacimiento:</strong> {{ formatBirthDate }}<br>
...
</html>
Mustache.compiler().withFormatter(new Mustache.Formatter() {
    public String format (Object value) {
      if (value instanceof Date) return _fmt.format((Date)value);
      else return String.valueOf(value);
    }
    protected DateFormat _fmt = new SimpleDateFormat("yyyy/MM/dd");
});