2016-11-05 56 views
0

我在j2ee的新手,并有一个问题,我不能解决。我的应用程序使用Spring,Hibernate4和JSF 2 * 我的模型实体(其名称任务)有下一个字段:通过JSF转换日期和LocalDateTime

@Convert(converter = LocalDateTimeConverter.class) 
@Column(name = "date_time_complete") 
private LocalDateTime completeDate; 

在这种情况下,转换到LocalDateTime日期,相反我做了转换器

@Converter 
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Date> { 

    public Date convertToDatabaseColumn(LocalDateTime attribute) { 
     return TimeUtil.LDTtoDate(attribute); 
    } 

    public LocalDateTime convertToEntityAttribute(Date dbData) { 
     return LocalDateTime.ofInstant(dbData.toInstant(), ZoneId.systemDefault()); 
    } 
} 

在我.xhtml我有一个代码

<td><h:inputText id="date" value="#{task.completeDate}"> 
        <f:convertDateTime pattern="dd.MM.yyyy"/> 
       </h:inputText> 

当我试图挽救我的目标,我得到ELException与消息“无法转换java.util.Date到java.time.Loc alDateTime“。 调试应用程序我在convertToEntityAttribute中创建断点,但它不起作用。 通常,我想知道jsf如何使用LocalDateTime。 在这个应用程序中,我不需要输入completeDate字段。创建Task对象时,我需要保持这个空/空。我该怎么做?

回答

0

JSF有一些默认转换器。它们负责将视图数据(例如在输入文本中)转换为bean atrribute。就像将一个inputText转换为Double属性一样。希望Jsf提供了一种创建我们自己的转换器的方法,你应该看看这个tutorialthis one too。你可以创建一个转换器到你的LocalDateTime属性!如果你想直接为代码,这家伙有同样的问题,你的解决与jsf转换器! See here his solution